[解決済み] Oracle DBMS_LOB.INSTRとCONTAINSのパフォーマンス
2022-02-16 01:46:53
質問事項
dbms_lob.instrとcontainsの間にパフォーマンスの違いはありますか、それとも何か間違ったことをしていますか?
以下は私のコードです。
SELECT DISTINCT ha.HRE_A_ID, ha.HRE_A_FIRSTNAME, ha.HRE_A_SURNAME, ha.HRE_A_CITY,
ha.HRE_A_EMAIL, ha.HRE_A_PHONE_MOBIL
FROM HRE_APPLICANT ha WHERE ha.HRE_A_STATUS_ID=1 AND ha.HRE_A_CURRENT_STATUS_ID <= '7'
AND ((DBMS_LOB.INSTR(hre_a_for_search,'java') > 0)
OR EXISTS
(SELECT 1 FROM gob_attachment, gob_table WHERE hre_a_id=gob_a_record_id
AND gob_a_table_id = gob_t_id AND gob_t_code = 'HRE_APPLICANT'
AND CONTAINS (gob_a_document, 'java') > 0))
ORDER BY HRE_A_SURNAME
と最後の2行は instr を使用するために変更されています。
AND dbms_lob.instr(gob_a_document,utl_raw.cast_to_raw('java')) <> 0))
ORDER BY HRE_A_SURNAME
問題は、containsの代わりにinstrを使いたいのですが、instrはcontainsよりかなり遅いように思います。
どうすればいいですか?
CONTAINS
は Oracle Text インデックスを使用するので、次のようなものよりはるかに効率的であることが期待されます。
INSTR
は実行時に CLOB 全体を読み込まなければなりません。 この2つの文のクエリプランを生成してみると、その違いがOracle Textインデックスに関連していることがわかると思います。
なぜ
INSTR
よりも
CONTAINS
?
関連
-
[解決済み] 列名または提供された値の数がテーブル定義と一致しない
-
[解決済み】単一のクエリで加重平均を計算する
-
[解決済み] UNIONとUNION ALLの違いは何ですか?
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み] Oracleの全テーブルのリストを取得しますか?
-
[解決済み] SQL SELECT WHERE フィールドに単語が含まれる場合
-
[解決済み] オラクル:テーブルが存在する場合
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み】Oracleクエリが順序付け後に返す行数を制限するにはどうすればいいですか?
-
[解決済み】OracleでAUTO_INCREMENTでidを作成する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】''付近の構文が正しくない
-
[解決済み】Excelに合体的な関数はありますか?
-
[解決済み】SQL Serverは「集約関数やサブクエリを含む式に対して集約関数を実行できない」が、Sybaseはできる。
-
[解決済み】ORA-01791: SELECTされた式ではない
-
[解決済み] アンピボットの主キーを含む対象コードページで、テキストが切り捨てられたか、1つ以上の文字が一致しない。
-
[解決済み] pg_restoreです。[archiver] 入力ファイルはテキスト形式のダンプであるように見えます。psql を使用してください。
-
[解決済み] SQL Server サブクエリが 1 つ以上の値を返しました。これは、サブクエリが =, !=, <, <= , >, >= のように続く場合は許可されません。
-
[解決済み] SQLです。最初の出現箇所のみを返す
-
[解決済み] CLOBとNCLOBの違いは何ですか?
-
[解決済み] 時間を時間単位や10分単位でグループ化する方法