はかますたいる!きょろの技的雑記

井上恭輔(@kyoro353)の私的かつ技的な日記です。米国サンフランシスコで暮らすエンジニアです。

続・SQL最適化

なんともSQLの最適化って奥が深いなぁ。
いろいろ勉強&テストしたのでメモメモ。
(ギークな人にはあたりまえのことかもしれないけど…笑)

  • PRIMARY KEYは最優先して使われる。
  • id > 0 などがWhere句に含まれる場合は、複合インデックスの対象から無視される。

たとえば複合インデックスが(name,age)のとき、

SELECT * FROM hoge WHERE name = "みこ" AND age = 19 AND id > 0 

idが含まれて居ないのに、これでも複合インデックスが使われる。

調べてみると、要するに関数に関しては複合インデックスは使われないらしい。
> 、 <  、!= なんかも無理みたい。そういう場合はINで展開すべし、らしい。