我有一個表「表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