2008年11月22日 星期六

MySQL刪除重複資料

最近發現公司DB裡某個資料表異常的大,後來發現是RCS主機會每1分鐘insert4~10筆的資料進去~
所以還沒一年就有快2百萬筆記錄,每當使用者透過UI查詢就會造成MYSQL龐大的搜尋,更何況敝
公司還提供手機查詢的功能,這些記錄是有重覆性的,就像下面這樣..

sn dt tt tp
1 2008-02-26 17:01:00 香蕉 加樂福
2 2008-02-26 17:01:00 西瓜 金銀倒
3 2008-02-26 17:01:00 香蕉 加樂福
4 2008-02-26 17:01:00 西瓜 金銀倒
5 2008-02-26 17:02:00 蘋果 加樂福
6 2008-02-26 17:02:00 牛奶 金銀倒
7 2008-02-26 17:02:00 蘋果 加樂福
8 2008-02-26 17:02:00 牛奶 金銀倒

在時間點2008-02-26 17:01:00 就會有相同是tt香蕉 及 tp加樂福 的資料重覆,由於找不到insert
來源的那支程式在哪執行..所以我就決定先把重覆的刪除,並由SERVER排程去執行。

好用的MYSQL語法 ALTER IGNORE TABLE 資料表 ADD UNIQUE INDEX(欄位1,欄位2);

假設我這Table name 是songlist,欄位1是tt,欄位2是tp,SQL語法組合起來如下...
ALTER IGNORE TABLE songlist ADD UNIQUE INDEX(tt,tp);
之後就會發現重覆的資料已經不見了....^^

sn dt tt tp
1 2008-02-26 17:01:00 香蕉 加樂福
2 2008-02-26 17:01:00 西瓜 金銀倒
5 2008-02-26 17:02:00 蘋果 加樂福
6 2008-02-26 17:02:00 牛奶 金銀倒

沒有留言:

##EasyReadMore##