[英]Increase execution time for MySql delete query
我需要按某個值刪除表中的重復行並僅保留1。我使用此查詢
DELETE n1 FROM cities_extended n1, cities_extended n2 WHERE n1.city_id > n2.city_id AND n1.city = n2.city
但是我的表大約有65000行,執行時間太長,我不知道如何加快速度。
確保where子句中的所有字段都已建立索引。 如果其中任何一個未索引,則運行此查詢將為它們建立索引。
ALTER TABLE cities_extended ADD INDEX `city` (`city`)
如果未對此進行索引,則肯定會加快查詢速度。
您也可以嘗試使用臨時表。
drop table if exists `temp_for_duplicates`
CREATE TABLE `temp_for_duplicates` AS select * from `cities_extended` where 1 group by [field with duplicates]
truncate table `cities_extended`
INSERT INTO `cities_extended` SELECT * FROM `temp_for_duplicates`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.