我用 MySql 6
有一個 Table 有將近三千萬筆 ,格式是 MYISAM ,檔案 Size 為 4.1GB , 23 個欄位
我在程式中下了一個 SQL Command
select * from T1 where F1='xx' and F5='xx' and F6='xx' and F7='xx' order by F6 desc
結果給我跑了四萬多筆,我想說怎麼可能這麼多,應該頂多幾十筆而已
然後我拿到 SQL 編輯器去跑 ,還是跑四萬多筆
真是見鬼了....而且還跑出 where 條件以外的資料....當場三字經就出來了
然後我把 desc 拿掉在跑一次....@@
居然就正常了...只出了 21 筆.....那剛剛是怎樣
又把 desc 加回去 ....又是四萬多筆....機車咧....
我一定搞清楚這是為什麼,我用過n種資料庫,還沒碰過這種事
我先把 * 改成我要用的三個欄位....
select F5,F6,F8 from T1 where F1='xx' and F5='xx' and F6='xx' and F7='xx' order by F6 desc
在跑一次還是四萬多筆
那我就在 desc 後面加上剩下的欄位
select F5,F6,F8 from T1 where F1='xx' and F5='xx' and F6='xx' and F7='xx' order by F6 desc,F5,F8
在跑一次就正常了....@@,只出21筆
所以這就是說如果排序用到 desc 的話,就一定要把其他的欄位也抓來排序,缺一不可
在此提醒大家....^^
沒有留言:
張貼留言