大家好~!
MYSQL VER.5.0.51b-community-nt-log
我最近在研究系統效能部分(有關於 mysql date index 沒反應)...
遇到了一些問題!
我一般在處理日期部分 都是直接這樣下的
select * from `salary` where DATE < '2013-09-15'
但有時候筆數多的時候就算DATE 設 index
mysql explain 的type 也是 all (索引沒發揮作用)
這樣效能很差 所以在找方法讓它變快。
如果設
select * from salary where DATE between '2013-05-10' and '2014-09-29'
explain 出來 type 才會變成 range
(索引有發生作用 但是好像要設到資料裡面的上限跟下限裡面才有作用)
如果資料裡面包含 0000-00-00 想要抓不包含0000-00-00的資料想要這樣下
select * from salary where DATE between '1970-01-01 and '2050-12-31'
這時候explain 出來 就變成all 了(索引就沒發生作用了)
下 != or <> 0000-00-00 也會變成all
結論
1.想請問大家 mysql 在日期欄位上面 index 的正確用法?
2.如上面所述 我想要抓不是0000-00-00 的資料 用什麼方法可以讓index 產生效用?
可能說的不是很清楚...但就是date 在 mysql 的索引好像不是那麼友善?
請大大指點迷津 或是提示一下 我不清楚的部分 tks
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.211.153.57
※ 編輯: kaiyuegg 來自: 218.211.153.57 (09/16 15:17)