Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


14.1.3 定義したテキストインデクスの見直し

テキストインデクスが効果的に使用されているかどうかを確認する方法について説明します。

確認方法

SQLトレースファイルに出力されているアクセスパスの統計情報の次の出力項目を確認してください。

  • Data_tidx_all_search_cnt

上記の項目には,テキストインデクスを使用してチャンク内のデータを検索した際,チャンク内のデータを全件検索した回数が出力されます。上記の項目に1以上の値が出力されている場合は,対処を検討してください。

メモ

アクセスパスの統計情報については,「10.11.3 アクセスパスの統計情報の出力例と出力項目」を参照してください。

対処方法

次に示すどちらかの対処を行うと,性能が改善する可能性があります。

  • UNIONを使用してそれぞれの検索結果を統合するようにSQL文を修正する

  • テキストインデクスを使用しないで検索するようにSQL文を修正する(インデクス指定を指定する)

SQL文の修正例については,「11.17.11 同義語検索のチューニングを行う」の「(2) テキストインデクスが効果的に使用されているかを確認する」を参照してください。

次の条件をすべて満たすSQL文を指定している場合は,性能低下の原因となっている可能性があります。

  • LIKE述語,LIKE_REGEX述語,またはスカラ関数CONTAINSを検索条件に指定している

  • 上記の述語およびスカラ関数を指定した検索条件を,論理演算子ORを使って複数指定している

  • 上記の述語およびスカラ関数を指定した検索条件中にテキストインデクスの構成列を指定している

上記の条件を満たす場合,すべての検索条件に指定されている検索文字列を使用して検索が行われます。検索条件の数が非常に多い場合,テキストインデクスによる絞り込みは行われません。このとき,テキストインデクスを使用した全件検索が行われるため,検索時間が非常に長くなるおそれがあります。

また,同義語検索が行われた場合,内部処理では,各同義語を指定した検索条件が論理演算子ORを使って複数個指定された形に変更されます。そのため,同義語グループに登録されている同義語が非常に多い場合,テキストインデクスによる絞り込みではなく,テキストインデクスを使用した全件検索が行われます。