WHERE句のORの後ろはINDEXが効かない

タイトルでそのまま完結してしまっていますが、
ORを使用した場合、INDEXが効くのは左辺のみ

■「そもそもORを使うな」という話
■どうしても使わざるを得ないケースがあったとしても、クエリを二回実行するほうがベター


ということであります。



7.INはINDEXが有効でしかも結構速いが、ORは左辺と右辺のどちらかのみのINDEX適応(基本的には左辺)となる。
できるだけORを使うSQLを発行しなくてすむような設計にすることが望ましいですが、多くの要件では100%は難しいと思うので、その場合には、ANDで結合できる部分をできるだけ前に持ってきて、ORの後ろの条件をできるだけ簡潔なものとする(なぜなら原則としてORの後ろはINDEXが聞かないから)