删除千万级表中重复记录的办法
1. 选择候选键,60个字段,应该只用其中几个就可以判断重复了吧。
在候选键的这些字段上建立索引。
CREATE TRIGGER tr_历史交易表
ON 历史交易表
FOR DELETE
AS
INSERT INTO 历史交易表
SELECT DISTINCT * FROM deleted
GO
DELETE 历史交易表
FROM
(
SELECT 候选键1, 候选键2, 候选键3
FROM 历史交易表
GROUP BY 候选键1, 候选键2, 候选键3
HAVING COUNT(*) > 1
) t
INNER JOIN 历史交易表 a
ON t.候选键1 = a.候选键1
AND t.候选键2 = a.候选键2
AND t.候选键3 = a.候选键3
在候选键的这些字段上建立索引。
CREATE TRIGGER tr_历史交易表
ON 历史交易表
FOR DELETE
AS
INSERT INTO 历史交易表
SELECT DISTINCT * FROM deleted
GO
DELETE 历史交易表
FROM
(
SELECT 候选键1, 候选键2, 候选键3
FROM 历史交易表
GROUP BY 候选键1, 候选键2, 候选键3
HAVING COUNT(*) > 1
) t
INNER JOIN 历史交易表 a
ON t.候选键1 = a.候选键1
AND t.候选键2 = a.候选键2
AND t.候选键3 = a.候选键3