通過唯一索引去重
通過唯一索引去重為了防止重複資料插入,錯誤地為字段A、B創建了普通索引,C、D ,導致2000萬筆記錄的表中存在重複記錄。問題出現了:為這些欄位新增唯一索引會在不影響現有欄位的情況下刪除重複項嗎?
更正索引並處理重複項添加唯一索引不帶 IGNORE 修飾符的 ALTER TABLE 語句將失敗,因為唯一記錄已存在。但是,使用 IGNORE 修飾符將刪除重複項。
MySQL 版本5.7.4 以上版本的替代方法使用 INSERT IGNORE 將資料複製回原始表,丟棄任何重複的行。
CREATE TABLE tmp_data SELECT * FROM mytable;
TRUNCATE TABLE mytable;
ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D);
INSERT IGNORE INTO mytable SELECT * FROM tmp_data;
DROP TABLE tmp_data;
建立表格tmp_data SELECT * FROM mytable; 截斷表 mytable; ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D); 插入忽略到 mytable SELECT * FROM tmp_data; DROP TABLE tmp_data;
其他注意事項免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3