続・SQL最適化
なんともSQLの最適化って奥が深いなぁ。
いろいろ勉強&テストしたのでメモメモ。
(ギークな人にはあたりまえのことかもしれないけど…笑)
- PRIMARY KEYは最優先して使われる。
- id > 0 などがWhere句に含まれる場合は、複合インデックスの対象から無視される。
たとえば複合インデックスが(name,age)のとき、
SELECT * FROM hoge WHERE name = "みこ" AND age = 19 AND id > 0
idが含まれて居ないのに、これでも複合インデックスが使われる。
調べてみると、要するに関数に関しては複合インデックスは使われないらしい。
> 、 < 、!= なんかも無理みたい。そういう場合はINで展開すべし、らしい。