特殊な管理 > Windchill の環境の設定 > 部分文字列インデックスを使用した先頭と末尾にワイルドカードを含む照会の最適化
  
部分文字列インデックスを使用した先頭と末尾にワイルドカードを含む照会の最適化
部分文字列とは、先頭と末尾の両方にワイルドカード文字を含む文字列 (*ABC* など) のことです。部分文字列の基準を含む照会は、末尾だけにワイルドカードの付いた文字列 (ABC* など) の照会よりも、時間がかなり長くかかる可能性があります。標準のデータベースインデックスでは、部分文字列の基準を含む照会が効率的に実行されません。
標準のデータベースインデックスとは、エントリが姓の順に格納されている電話番号ディレクトリのようなものです。正確な名前、または姓の最初の数文字だけでもわかれば、特定のエントリの検索は素早く効率的になります。ただし、その姓の中に出現する文字の文字列を検索する場合は、個々のエントリをすべて見ていく必要があります。わかっている文字は、名前を構成する完全な文字列の中の部分文字列です。電話番号ディレクトリの場合のように、文字列の先頭の文字がわからない場合、標準のデータベースインデックスは使いものになりません。
これらのタイプの照会を効率的に実行し、エンドユーザーの照会レスポンス時間を向上させるために、追加のデータベーススキーマオブジェクトを作成できます。こうした追加のデータベーススキーマオブジェクトは、部分文字列インデックスと呼ばれています。部分文字列インデックスは、部分文字列基準を使用して照会される文字列属性ごとに作成できます。部分文字列のインデックスの作成により、部分文字列を含む照会のパフォーマンスを向上できます。本質的に、この部分文字列のインデックスは、電話番号ディレクトリ内の各エントリを取得して、それぞれの姓の小片部分を個別のインデックスエントリとして保存します。これにより、数文字だけが入力された場合でも、効率的にエントリを検索できるようになります。
部分文字列インデックスを使用する場合
管理者は、TopSQL MBean などの SQL 監視ツールを使用して、時間またはシステムリソースを過剰に浪費している照会を識別できます。これらの照会は部分文字列インデックスによって改善可能な場合もあります。たとえば、部品に対する膨大な数のサーチが存在していることや、ユーザーは通常は部品名または番号の部分文字列をサーチ対象としていることなどが観察されます。また、先頭にワイルドカード文字が付いた照会がほかのサーチよりも非常に長い時間がかかることを、管理者または IT に警告することもできます。
部分文字列基準のサーチに一般的に含まれる属性を識別した後は、部分文字列インデックスを作成して、これらのサーチがより効率的に実行されるようにできます。
これらの追加の部分文字列インデックススキーマオブジェクトにはシステムのストレージ容量が必要となり、これらのメンテナンスにはシステム処理リソースが必要となることに留意してください。つまり、部分文字列インデックスがすべての文字列属性に適しているわけではありません。余分なシステムリソースが必要になることと、エンドユーザーのレスポンス時間が向上することを対比して検討してください。
部分文字列インデックスの作成
部分文字列インデックスを作成するには、次の処理が必要です。
1. 部分文字列インデックスのコンフィギュレーションファイル内で部分文字列を定義する
2. SubStringIndexTool を実行して部分文字列インデックススキーマオブジェクトを作成する
3. 部分文字列インデックスがシステムデータと同期化するようにシステムが設定されていることを確認する
ユーザーに伝達する内容
部分文字列インデックスを使用する場合、照会は特定の文字数を上限とする部分文字列に対して最適化されます。この数値は、コンフィギュレーションファイル内のindexLength および joinLimit プロパティによって作成されます。たとえば、indexLength を 4、joinLimit を 3 に設定した場合、指定された文字数が 12 以下であれば、部分文字列の照会は最適なパフォーマンスを得られます。この最適な文字数をユーザーに伝達する必要があります。ユーザーが indexLength および joinLimit プロパティによって作成される文字数を超える文字を入力した場合、照会は機能しますが、最適化された状態ではありません。照会基準に指定される文字数が増えるほど、結果の精度は上がります。照会基準が最適な文字数を日常的に上回り、ユーザーの照会パフォーマンスの低下が報告されるような場合は、indexLength の増大を検討する必要があります。