標籤:mysql 行業 solr 備份 ima 主鍵 mys 慢慢 creat
業務過程中,兩張表求差
一開始一張小表,以為資料量不會很大,所以就沒有做索引。
當實際運行過程中,小錶慢慢長大了,發現兩張表求差的時間能達到幾個小時!!!AMAZING!
咋辦,建索引唄
然後問題出現了,小表有重複資料,咋整,一個一個刪除太sb了
寫sql
DELETE FROM solr_indexed_max_incidentID WHERE incidentID IN (SELECT incidentID FROM solr_indexed_max_incidentID GROUP BY incidentID HAVING count(incidentID) > 1);
報錯啦:
ERROR 1093 (HY000): You can‘t specify target table ‘solr_indexed_max_incidentID‘ for update in FROM clause
呵呵,不行
另想轍
先建一個暫存資料表,把去重後的資料烤過來
create table solr_tmp as SELECT * FROM solr_indexed_nax_incidentID GROUP BY incidentID HAVING count(incidentID) > 1;
然後把原表刪了
drop table solr_indexed_max_incidentID;(後來想到這樣做太不專業,應該把這個表改個名字相當於備份在那兒,萬一下一步出錯了不懵逼了?)
然後改名字
RENAME TABLE solr_tmp TO solr_indexed_max_incidentID;
然後加索引
alter table ‘solr_indexed_max_incidentID‘ add primary key(‘incidentID‘);
繼續運行商務邏輯,幾秒鐘求差完成!
記一次業務中的大坑-MYSQL有重複資料下的增加主鍵