• 締切済み

比較条件と検索速度について

お世話になります。 現在、Oracleの検索速度の違いで、少し気になっています。 Select文に、Where比較条件を入れました時に、「AND」だけの複数条件 と、「OR」を混ぜた時の検索時間に、違いがあるように感じていました。 例えば、ORの条件をつけずに、 『where abc='a'』 と 『where abc='b'』のSelect文を2回実行することより、 『where abc='a' or abc='b'』と実行した方が大きく時間がかかってしまう様な ことは、起きるのでしょうか。 よろしくお願いいたします。

みんなの回答

  • javawater
  • ベストアンサー率11% (6/52)
回答No.3

ORは基本的に回避した方がいいです。 通常はIN等や、複数回の問い合わせで逃げます。 例) 『where abc='a' or abc='b'』 ↓ 『where abc in('a','b')』

  • SUPER-NEO
  • ベストアンサー率38% (706/1857)
回答No.2

こんにちは。 パフォーマンスチューニング、大変ですよね。 私が知っている範囲ですと、OR 条件を多用したSQL文は、 確かにパフォーマンスは良くありません。 でも、それは劇的に遅くなる、ということはなく、 データ件数によってレスポンスが左右されます。 質問者さんがおっしゃるように、場合によっては、 1 つのSQLに、OR で条件を連結するよりも、 複数の単純な SQL を実行した結果を踏まえて処理をする、 というほうがパフォーマンスが良かったりすることは、 否定できません。 最適なクエリで実行することがベストですが、 これには Explain などを利用して、無駄の無い SQL を 実行するようにしましょう。

  • nitorin
  • ベストアンサー率55% (11/20)
回答No.1

起きるか、起きないか明言できませんが、 起きているか、起きていないかは調べれますので 下記URL等を参考に Explain plan等を利用してオプティマイザが決定した 実行計画を双方のSQLで比較してみてはどうでしょうか。

参考URL:
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19207-01/ex_plan.html

関連するQ&A