我有一個查詢用於查找重複數據。我發現最近查詢非常緩慢,而且速度越來越慢。這是我使用的查詢(改名列):優化查找重複數據的MySQL查詢
SELECT col1,
COUNT(col1) AS Counter
FROM people
GROUP BY col1
HAVING (Counter > 1)
我已經索引COL1(這是一個varchar(500)),但查詢需要的時間來執行的史詩量。有沒有更好的方法來處理這個問題,還是我卡住了?
我有一個查詢用於查找重複數據。我發現最近查詢非常緩慢,而且速度越來越慢。這是我使用的查詢(改名列):優化查找重複數據的MySQL查詢
SELECT col1,
COUNT(col1) AS Counter
FROM people
GROUP BY col1
HAVING (Counter > 1)
我已經索引COL1(這是一個varchar(500)),但查詢需要的時間來執行的史詩量。有沒有更好的方法來處理這個問題,還是我卡住了?
試試這個:
SELECT *
FROM people po
WHERE EXISTS
(
SELECT NULL
FROM people pi
WHERE pi.col1 = po.col1
LIMIT 1, 1
)
這將返回每個複製實例。
這個效果非常好,而且速度更快,謝謝! – 2010-05-19 18:52:43
非常聰明! – 2010-05-19 18:59:44
只是爲了讓你知道,查詢從90秒降到了4秒,謝謝! – 2010-05-19 19:04:54
根據您的業務規則是否允許重複數據?否則,我會清除重複項,並在列上放置一個唯一的(如果不是主鍵的)鍵,以阻止數據首先進入表中。 – 2010-05-19 18:44:36
允許複製,但僅限於某些其他條件存在時。這有點模糊,但這是我需要解決的問題。 :( – 2010-05-19 18:50:51