
現在、大量データを扱うマスタDB(oracle)に対し、オンライン業務にて曖昧検索を実施する機能を開発しています。
性能を十分に考慮したsqlを組む必要があり、以下のいづれを選択するか判断しかねています。
それぞれの意味合いを十分に理解できておらず申し訳ございませんが、どなたかご教示をお願いします。
■要件
曖昧検索をして検索を行う。
例)漢字氏名が”林”で始まるお客様を一覧表示
■実現するためのSQL文
案1)select~ where 漢字氏名 like ’林%’;
案2)select~ where substr(漢字氏名,0,2)=’林’;
※漢字氏名の型はvarchar2です。
処理時間(oracleのコスト的には)どちらも変わりませんかね?
以上、宜しくお願いいたします
No.1ベストアンサー
- 回答日時:
漢字氏名列に索引がある場合、LIKE検索では、レンジスキャン可能です。
substrなど関数を介す場合は、一般的には索引を用いません。
ただし、substr関数を使うことが分かっている場合は、ファンクション索引を
使うことでファンクション索引に合致する検索であれば索引が利用できます。
仮に索引がない場合、LIKEでもsubtr関数でもフルスキャンですから、
substr関数のオーバーヘッド程度の違いしか生まれません。
索引の有無で変わってくるので、実際にどちらが効果的かは、実行計画を自ら比較してください。
No.2
- 回答日時:
私なら 漢字氏名にindex付けて like検索します。
検索文字数が 必ず全角1文字とかならいいですが「山田」「早乙女」等
長さが変わるでしょうし。
like検索ににしておけば業務アプリ側で制限さえかけなければ
'%太郎' '%純一% 等で後方一致・部分一致も簡単に実装できるかと
(フルスキャンしますが)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
GROUP BYを行った後に結合したい。
Oracle
-
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
SELECT 文 GROUP での1件目を取得
SQL Server
-
-
4
変数が選択リストにありません
Oracle
-
5
SQL、oracleにて文字列操作(連結、切りだし)のパフォーマンス向上法
その他(データベース)
-
6
TO_CHARで小数点以下がある場合と無い場合を切り分ける方法
その他(プログラミング・Web制作)
-
7
Access:クエリーにて集計後に文字列結合したい。
その他(データベース)
-
8
ウォッチ式の文字数制限について
Visual Basic(VBA)
-
9
「T」「H」「C」などだけが入力できない
Word(ワード)
-
10
ビューで引数を使いたい
SQL Server
-
11
SQLでSUMなどの関数でデータが無い時に0を返したい。
Oracle
-
12
実行計画の「COST」と「BYTE」について教えていただきたいです。
Oracle
-
13
キャッシュを使わずにSELECTを投げたい
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
キャッシュを使わずにSELECTを...
-
likeとsubstrの使いわけについて
-
WHERE句の実行順序
-
あいまい検索のパフォーマンス...
-
WHERE句はJOIN結合前結合後どち...
-
ヒント句が無効になります
-
Oracleで検索すると、フリーズ...
-
SQL ORDER BYにおける条件について
-
Oracleでデータ取得処理を高速...
-
Accessのマクロでモジュールを...
-
Statement ignored というエラー
-
Access VBAで行ラベルが定義さ...
-
SQLで部分的にGROUP BYしたいとき
-
sqlplusでヘッダーが付かない
-
PL/SQLカーソルの2重FORループ...
-
ストアドプロシジャからストア...
-
callで順に実行されるプロシー...
-
日付型カラムへのデータINSERT
-
sqlplusのspoolで空白行出現
-
エクセルVBAでUserFormを起動し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
キャッシュを使わずにSELECTを...
-
WHERE句の実行順序
-
likeとsubstrの使いわけについて
-
ヒント句が無効になります
-
あいまい検索のパフォーマンス...
-
Like文の速度について教えてく...
-
WHERE句はJOIN結合前結合後どち...
-
いつもお世話になってます。
-
パフォーマンスについて
-
問題解決のストーリーにて PDCA...
-
SQL ORDER BYにおける条件について
-
実行計画HASH JOIN RIGHT OUTER
-
計画力をつけるにはどうすれば...
-
表の結合(性能)
-
JOINの時のONとWHEREの違いにつ...
-
アナライズでほとんどの処理が...
-
実行計画の取得方法について
-
実行計画(EXPLAIN PLAN、AUTOT...
-
外部結合と等価結合のパフォー...
-
アナライズとヒント句
おすすめ情報