WHERE句のORの後ろはINDEXが効かない
タイトルでそのまま完結してしまっていますが、
ORを使用した場合、INDEXが効くのは左辺のみ
■「そもそもORを使うな」という話
■どうしても使わざるを得ないケースがあったとしても、クエリを二回実行するほうがベター
ということであります。
7.INはINDEXが有効でしかも結構速いが、ORは左辺と右辺のどちらかのみのINDEX適応(基本的には左辺)となる。
できるだけORを使うSQLを発行しなくてすむような設計にすることが望ましいですが、多くの要件では100%は難しいと思うので、その場合には、ANDで結合できる部分をできるだけ前に持ってきて、ORの後ろの条件をできるだけ簡潔なものとする(なぜなら原則としてORの後ろはINDEXが聞かないから)