
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
表の結合(性能)
-
いつもお世話になってます。
-
実行計画の取得方法について
-
並び順で処理時間が違うのは?
-
計画力をつけるにはどうすれば...
-
ヒント句が無効になります
-
このページ、どうなってるので...
-
Accessのマクロでモジュールを...
-
Accessのページヘッターを最初...
-
ExcelVBAのInputBoxメソッドの...
-
SQL文(クエリ)をご教授くださ...
-
ACCESSのVBAについて
-
ドメインの取得日を変更する方法
-
エクセルのマクロの止め方
-
クエリー
-
日付の表示について
-
RTHDCPL.EXE... が起動時に出て...
-
【エクセルの質問】日付の書式...
-
ストアドについて
-
Access VBAで行ラベルが定義さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
キャッシュを使わずにSELECTを...
-
WHERE句の実行順序
-
likeとsubstrの使いわけについて
-
Like文の速度について教えてく...
-
ヒント句が無効になります
-
WHERE句はJOIN結合前結合後どち...
-
INDEX作成による更新系の影響範囲
-
実行計画HASH JOIN RIGHT OUTER
-
あいまい検索のパフォーマンス...
-
Oracleでデータ取得処理を高速...
-
アナライズでほとんどの処理が...
-
SQL ORDER BYにおける条件について
-
oracleのanalyzeと処理時間につ...
-
PDCAを回すって?
-
Oracleで検索すると、フリーズ...
-
800万件のテーブル読み込み...
-
処理速度の改善について
-
OEMで負荷の少ないSQLの実行計...
-
oracle(SQL)のHINT指定について
-
ORACLEでwhere句の検索順序
おすすめ情報