最近發現公司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         牛奶              金銀倒
 
 
沒有留言:
張貼留言