質問 |
||
| 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/... |
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |