プロが教えるわが家の防犯対策術!

お世話になります。

現在、Oracleの検索速度の違いで、少し気になっています。

Select文に、Where比較条件を入れました時に、「AND」だけの複数条件
と、「OR」を混ぜた時の検索時間に、違いがあるように感じていました。

例えば、ORの条件をつけずに、
『where abc='a'』 と 『where abc='b'』のSelect文を2回実行することより、
『where abc='a' or abc='b'』と実行した方が大きく時間がかかってしまう様な
ことは、起きるのでしょうか。

よろしくお願いいたします。

A 回答 (3件)

ORは基本的に回避した方がいいです。


通常はIN等や、複数回の問い合わせで逃げます。
例)
『where abc='a' or abc='b'』

『where abc in('a','b')』
    • good
    • 0

こんにちは。


パフォーマンスチューニング、大変ですよね。


私が知っている範囲ですと、OR 条件を多用したSQL文は、
確かにパフォーマンスは良くありません。
でも、それは劇的に遅くなる、ということはなく、
データ件数によってレスポンスが左右されます。


質問者さんがおっしゃるように、場合によっては、
1 つのSQLに、OR で条件を連結するよりも、
複数の単純な SQL を実行した結果を踏まえて処理をする、
というほうがパフォーマンスが良かったりすることは、
否定できません。
最適なクエリで実行することがベストですが、
これには Explain などを利用して、無駄の無い SQL を
実行するようにしましょう。
    • good
    • 0

起きるか、起きないか明言できませんが、


起きているか、起きていないかは調べれますので

下記URL等を参考に
Explain plan等を利用してオプティマイザが決定した
実行計画を双方のSQLで比較してみてはどうでしょうか。

参考URL:http://otndnld.oracle.co.jp/document/products/or …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!