ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3472502 比較条件と検索速度について
質問者:selecru お世話になります。

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

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

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

よろしくお願いいたします。
困り度:
  • 困っています
質問投稿日時:
07/10/29 21:02
最新から表示回答順に表示

回答

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

『where abc in('a','b')』
回答者:javawater
種類:回答
どんな人:経験者
自信:参考意見
回答日時:
08/02/02 22:51
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.2 こんにちは。
パフォーマンスチューニング、大変ですよね。


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


質問者さんがおっしゃるように、場合によっては、
1 つのSQLに、OR で条件を連結するよりも、
複数の単純な SQL を実行した結果を踏まえて処理をする、
というほうがパフォーマンスが良かったりすることは、
否定できません。
最適なクエリで実行することがベストですが、
これには Explain などを利用して、無駄の無い SQL を
実行するようにしましょう。
回答者:SUPER-NEO
種類:アドバイス
どんな人:専門家
自信:参考意見
回答日時:
07/11/03 14:36
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.1 起きるか、起きないか明言できませんが、
起きているか、起きていないかは調べれますので

下記URL等を参考に
Explain plan等を利用してオプティマイザが決定した
実行計画を双方のSQLで比較してみてはどうでしょうか。
回答者:nitorin
種類:アドバイス
どんな人:専門家
自信:参考意見
回答日時:
07/10/31 17:26
参考URL: http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/...
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)
 
最新から表示回答順に表示