我有一个表“表A”重复记录像 “`如何删除mysql中的重复记录? (减查询执行时间大表)
ID Name Course
01 abc dotnet
02 xyz java
03 mno sas
04 abc dotnet
05 xyz java
06 abc dotnet
07 aaa testing
08 bbb sap
--- “abc” came 3 times (id—1,4,6)
--- “xyz” came 2 times (id – 2,5)
`” 从上面的表格I(基于“名称”列式两份)需要删除重复项(ID为-1,4,2) - 不是ID 6,5这些是最新的文件。 “table-A”只能包含 -
ID Name Course
03 mno sas
05 xyz java
06 abc dotnet
07 aaa testing
08 bbb sap
I tried like—
CREATE TEMPORARY TABLE temptable (idTemp int(12), totTemp int(4));
INSERT INTO temp_table(`idTemp`, `totTemp`) select max(ID), count(*) as tot from table-A
group by Name, Course having tot > 1 or tot =1 order by ID ;
Delete from table-A where ID not in (select idTemp from temp_table);
上述代码正在工作。但是在大数据表上需要花费很长时间。我的表格包含200,000条40列以上的记录,每个月它会添加20,000条记录。
在这种情况下,我需要找到基于10列(group by 10列)的重复项,任何人都可以提出正确,快速的工作代码。
我在互联网上发现不同的逻辑,并尝试过,但他们比我上面解释的花费更多的时间。
我主要关心的是查询执行时间。所以请建议我好的逻辑或查询哪些将做上面的任务快。
(仅供参考: - 我在stackoverflow中也发现了一些逻辑,最好的建议是在每个列上创建唯一索引,但在我的情况下,数据来自政府每个月,它可能包含重复项在文件中,以及比较数据库。所以我需要删除重复或显示重复电网(使用asp.net)。 )
您最关心的是时间,所以我们最好快点为您做这份工作? http://stackoverflow.com/questions/3311903/remove-duplicate-rows-in-mysql,http://stackoverflow.com/questions/4685173/delete-all-duplicate-rows-except-for-one-in- MySQL的。换句话说,这是至少几个问题的重复。 – Mike