効果的な索引のコーディング
以下のトピックで提供される提案は、DB2® for i が、使用可能な索引の利点を活用できるようなコードを設計するのに役立ちます。
- 数字変換の回避
列の値とホスト変数 (または定数値) とを比較する場合には、同じデータ・タイプと属性を指定するようにしてください。 DB2 for i は、ホスト変数または定数値の精度のほうが列の精度よりも高い場合には、指定された列について索引を使用しない場合があります。比較される 2 つの項目のデータ・タイプが異なっていると、DB2 for i はそのどちらか一方の値を変換する必要があり、結果が不正確なものになることがあります (計算機の精度に制約があるため)。 - 算術式の回避
行選択述部の列と比較するオペランドとして算術式を絶対に指定しないでください。最適化プログラムでは、算術式と比較される列についての索引は使用しません。 この手法によって列の索引が使用不可になることはないものの、見積もりや、おそらく索引走査のキー位置決めの使用は妨げられることになります。 失われる主な機能は、照会の最適化に役立つ統計を使用および抽出する機能です。 - 文字ストリングの埋め込みの回避
固定長文字ストリングの列値とホスト変数または定数値とを比較するときは、同じデータ長を使用するようにしてください。 DB2 for i は、定数値またはホスト変数が列より長いと、索引を使用しない場合があります。 - % または _ で始まる LIKE パターンの使用の回避
LIKE (OPNQRYF %WLDCRD) 述部のパターンの中で使用されるパーセント (%) および下線 (_) は、選択する行の列の値に類似する文字ストリングを指定します。 文字ストリングの途中または終わりにこれらの文字を使用すると、 索引の利点を活用することができます。 - 派生索引の使用
SQL 索引は、キーが式として指定された場所に作成できます。 このタイプのキーは、派生キーと呼ばれることもあります。 - 疎索引の使用
SQL 索引は、WHERE 選択述部を使用して作成できます。 これらの索引は、疎索引とも呼ばれます。 疎索引の利点は、索引で保守される項目の数が少ないことです。 WHERE 選択基準に一致する項目だけが、索引で保守されます。
親トピック: 索引方針の作成