我想從mysql數據庫中刪除重複的記錄。使用下面的命令,它將刪除所有重複項並保留一行。在我的數據庫中有300,000條記錄,我預計有大約100,000條記錄是重複的。刪除重複記錄需要太多時間
重複項需要通過下面的命令刪除,但問題是,我已經在晚上9小時後,它仍然在運行的命令。
DELETE n1 FROM tableA n1,tableA n2 WHERE n1.title= n2.title AND n1.id > n2.id
發生了什麼事?誰能解釋一下?
我想從mysql數據庫中刪除重複的記錄。使用下面的命令,它將刪除所有重複項並保留一行。在我的數據庫中有300,000條記錄,我預計有大約100,000條記錄是重複的。刪除重複記錄需要太多時間
重複項需要通過下面的命令刪除,但問題是,我已經在晚上9小時後,它仍然在運行的命令。
DELETE n1 FROM tableA n1,tableA n2 WHERE n1.title= n2.title AND n1.id > n2.id
發生了什麼事?誰能解釋一下?
嘗試:
select * from tableA as n1 join tableA as n2 on n1.title = n2.title AND n1.id > n2.id;
,並解釋它:n1.title = n2.title
不使用索引。
這個查詢會更好:
delete from `t2` where `id` in (
select cid from (
select max(id) as cid from t2 group by title having count(*) > 1
) as c
);
你對'title'爲每個表定義的索引? – Interrobang
@Interrobang標題只在一個表中A列標題包含我想刪除重複的文章的標題 – payal
這個命令似乎沒有問題,沒有理由延遲這個時間。你可能在表格關係或記錄方面有問題。 –