No.3ベストアンサー
- 回答日時:
前方一致ならインデックスが効くと思います。
当然、DBMSがそのインデックスを使用する実行計画を選択した場合ですが。
2回SELECTした場合はディスク走査が2回になりそうです。
厳密に言えば、クエリーのパース時間も2回分になるでしょう。
LIKE 'A%' OR LIKE 'B%'の場合はディスク走査はおそらく1回で済みそうです。
キャッシュやバッファ等もあるので、2回実行するからといって、純粋に時間も2倍とはならないでしょうが、LIKE条件をORで結合したほうが速そうな印象はあります。
いずれにしても、現在のサーバー性能で数万件程度のデータ操作なら、大差はないと思います。
ただし、ループ内で実行する等、高頻度で実行するのなら、小さな差も無視できません。
どうしても白黒つけたい場合、想定データ量も分かっているようですし、自分ならテストデータを作って試してみます。一応の根拠にはなりますよね。
回答ありがとうございます。
速度的にみると「or」でつなげた方が早そうなんですね。
ただ、以前にサーバに負荷がかかりすぎて他の処理に影響が出たことがあったので、
テストデータを作成して試してみます。
No.2
- 回答日時:
「項目 Like 'A%' or 項目 Like 'B%'」の間違いとした場合
基本的に一つのSQLで処理した方が速いでしょう。
・「項目 Like 'A%' 」「項目 Like 'B%'」いずれもINDEXがないなどフルスキャンの場合は、一回のフルスキャンで全データを取得できます。
・「項目 Like 'A%' 」の該当件数、「項目 Like 'B%'」の該当件数が少ない時はそれぞれのINDEXの結果を合わせて取得します。ほとんどの場合はこの処理(=CONCATINATE)は速いと思います。
ただ、「項目 Like 'A%' 」の該当件数+「項目 Like 'B%'」の該当件数の合計でのINDEXアクセスのコストがフルスキャンのコストを上回る可能性もゼロではありません。
必要に応じて /*+ FULL( 表名 ) */ のようにヒント句をつけたほうがいいでしょう。
回答ありがとうございます。
速度的にみると「or」でつなげた方が早そうなんですね。
ただ、以前にサーバに負荷がかかりすぎて他の処理に影響が出たことがあったので、
教えていただいた「 /*+ FULL( 表名 ) */ 」の
ヒント句を使用したりして負荷試験もしてみます。
No.1
- 回答日時:
> Like "A%" and Like "B%
は成立しない。
レコード数、その列へのIndex付与、統計情報の状態で変わるので、難しいですね。
この回答への補足
回答ありがとうございます。
「 Like "A%" and Like "B%」
は成立しないとのことですが、たしかに良く考えてみれば(^^;
「 Like "A%" or Like "B%」
ならどうなのでしょうか?
レコード数は、数万件規模です。
Like文の検索条件そのものにはIndexは付与されていません。
以上のことを踏まえ再度どうでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Android(アンドロイド) Pixelのレコーダーで文字起こしした英文を検索する方法 4 2022/10/21 07:45
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- 英語 提示文の"seem as"について 1 2023/01/03 08:33
- TOEFL・TOEIC・英語検定 英検3級のライティングに関して質問があります。 定型パターンを何個か覚えておこうと考え下記を見つけま 6 2022/08/28 06:20
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- Visual Basic(VBA) ワークシート内を検索 1 2022/12/19 23:46
- 英語 一般動詞の疑問文、否定文の作り方 5 2022/11/10 18:17
- 英語 I would like to invite you to come in Umeda 3 2022/03/25 08:31
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
likeとsubstrの使いわけについて
Oracle
-
データベースのINT型項目にNULLはNG?
MySQL
-
Viewにインデックスは張れますか?
Oracle
-
-
4
GROUP BYを行った後に結合したい。
Oracle
-
5
動的にSPOOLファイルのファイル名を生成したい
Oracle
-
6
大量データの取得処理について
その他(データベース)
-
7
ToとCCとBCCに同じアドレスを入れて送ると・・・
Gmail
-
8
html上で、バッチやexeファイルの起動をしたい
ホームページ作成・プログラミング
-
9
単一グループのグループ関数ではありません。
Oracle
-
10
あいまい検索のパフォーマンス向上について
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
キャッシュを使わずにSELECTを...
-
WHERE句の実行順序
-
ヒント句が無効になります
-
問題解決のストーリーにて PDCA...
-
likeとsubstrの使いわけについて
-
Statement ignored というエラー
-
Access VBAで行ラベルが定義さ...
-
SQL*Plusの終了はquit?exit?
-
Accessのマクロでモジュールを...
-
VBA プロシージャの名前の取得
-
PL/SQLカーソルの2重FORループ...
-
Accessでグローバル変数を宣言...
-
sqlplusのspoolで空白行出現
-
sqlplusでヘッダーが付かない
-
エクセルVBAでUserFormを起動し...
-
或るプロシージャの呼び出し元判定
-
ACCESS2007インポート時の空白...
-
ストアドプロシジャからストア...
-
百の位での四捨五入について
-
14桁の日付(YYYYMMDDHHMMSS)を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
キャッシュを使わずにSELECTを...
-
likeとsubstrの使いわけについて
-
WHERE句の実行順序
-
Like文の速度について教えてく...
-
あいまい検索のパフォーマンス...
-
WHERE句はJOIN結合前結合後どち...
-
ヒント句が無効になります
-
実行計画HASH JOIN RIGHT OUTER
-
【チューニング】インデックス...
-
ORACLE9i→11gにバージョンアッ...
-
DATE型カラムのインデックスが...
-
問題解決のストーリーにて PDCA...
-
アナライズでほとんどの処理が...
-
TeXの索引作成に関して
-
SQL ORDER BYにおける条件について
-
Oracle 実行計画、統計情報の見方
-
JOINの時のONとWHEREの違いにつ...
-
PDCAを回すって?
-
DBの実行計画って?
-
INDEXヒントとは?
おすすめ情報