2017-09-20 84 views
0

我有一張大桌子。我發現重複,這張表有10列(讓我們說A,B,C,D ..等等)。我正在運行下面的查詢來獲取重複的記錄,但它需要超過1小時。 查詢:檢查大表中的重複

SELECT COUNT(*) FROM TABLE1 GROUP BY A,B,C,D,E HAVING COUNT(*) >1 

有人建議我更快的方法來完成這件事。

+0

您需要所有具有不同值的列嗎? –

+0

表中有多少行?什麼硬件?很多事情會影響性能,而不僅僅是查詢。無論如何,如果這是一次性操作,如果需要一點時間,這有什麼關係嗎?但是,如果您經常執行此操作以刪除重複項,請問自己爲什麼 - 您是否應該更改表上的主鍵,以便重複項無法首先創建? – ADyson

+0

如果你只是想找到它們後刪除重複的行,請參閱此 - https://stackoverflow.com/questions/3311903/remove-duplicate-rows-in-mysql –

回答

0

使用此查詢查看績效!

SELECT count(*) FROM tbl_name mt 
JOIN 
(SELECT A,B,C,D,E FROM tbl_name GROUP BY A,B,C,D,E HAVING COUNT(*) >1) T 
ON mt.A= T.A 
and mt.B= T.B 
and mt.C= T.C 
and mt.D= T.D 
and mt.E= T.E