2009年3月30日月曜日

Oracle:WHERE句の指定順序とパフォーマンス

ANDは後ろから、ORは最初から
SQLのWHERE国複数の索引のない列が指定されていた時の絞り込み順番はANDとORで
異なる
例えば、
select * from testtbl where a1=1 and a2=1 and a3=1;
とandでつながれたSQLは
a3=1
a2=1
a1=1
と後ろから順に絞り込みが実行される
このため、後ろに絞り込みが可能な条件を記述すると検索が早くなる。
また、
ORでつながれたSQLはANDとは逆で前から順に絞り込まれる
select * from testtbl where a1=1 or a2=1 or a3=1;

0 件のコメント: