- 締切済み
比較条件と検索速度について
お世話になります。 現在、Oracleの検索速度の違いで、少し気になっています。 Select文に、Where比較条件を入れました時に、「AND」だけの複数条件 と、「OR」を混ぜた時の検索時間に、違いがあるように感じていました。 例えば、ORの条件をつけずに、 『where abc='a'』 と 『where abc='b'』のSelect文を2回実行することより、 『where abc='a' or abc='b'』と実行した方が大きく時間がかかってしまう様な ことは、起きるのでしょうか。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- javawater
- ベストアンサー率11% (6/52)
ORは基本的に回避した方がいいです。 通常はIN等や、複数回の問い合わせで逃げます。 例) 『where abc='a' or abc='b'』 ↓ 『where abc in('a','b')』
- SUPER-NEO
- ベストアンサー率38% (706/1857)
こんにちは。 パフォーマンスチューニング、大変ですよね。 私が知っている範囲ですと、OR 条件を多用したSQL文は、 確かにパフォーマンスは良くありません。 でも、それは劇的に遅くなる、ということはなく、 データ件数によってレスポンスが左右されます。 質問者さんがおっしゃるように、場合によっては、 1 つのSQLに、OR で条件を連結するよりも、 複数の単純な SQL を実行した結果を踏まえて処理をする、 というほうがパフォーマンスが良かったりすることは、 否定できません。 最適なクエリで実行することがベストですが、 これには Explain などを利用して、無駄の無い SQL を 実行するようにしましょう。
- nitorin
- ベストアンサー率55% (11/20)
起きるか、起きないか明言できませんが、 起きているか、起きていないかは調べれますので 下記URL等を参考に Explain plan等を利用してオプティマイザが決定した 実行計画を双方のSQLで比較してみてはどうでしょうか。