5.2.6 テキストインデクスを使用して検索する際の留意事項
論理演算子ORを使用して,テキストインデクスの構成列を指定したLIKE述語,LIKE_REGEX述語,およびスカラ関数CONTAINSを複数指定した場合,すべての条件に指定した検索文字列を使用して検索処理が行われます。
- (例)C1はテキストインデクスの構成列とします。
-
SELECT * FROM "T1" WHERE "C1" LIKE 'ABCDEFG%' OR "C1" LIKE_REGEX 'XYZ[0-9]+'
上記のSELECT文を実行した場合,LIKE述語およびLIKE_REGEX述語の条件に指定した検索文字列(ABCDEFG%とXYZ[0-9]+)を使用して検索処理が行われます。
LIKE述語に指定したパターン文字列,LIKE_REGEX述語に指定した正規表現文字列,スカラ関数CONTAINSに指定した検索条件式指定の文字列の合計数が1,001文字以上になると,検索処理時間が急激に増加するおそれがあります。そのため,合計文字数が1,001文字以上の場合は,次に示すどちらかの対処をすることを検討してください。
-
UNIONを使用して,それぞれの検索結果を統合するなどSQL文を変更する
-
インデクス指定などを指定し,テキストインデクスを使用しない検索を行う
UNIONについては,マニュアルHADB SQLリファレンスの問合せ式を参照してください。インデクス指定については,マニュアルHADB SQLリファレンスのインデクス指定を参照してください。