一般的な Query 最適化のヒント

照会をできるだけ高速に実行するのに役立つヒントのいくつかを次に示します。

  • 左端のキー列がユーザーの選択述部に一致する索引を作成して、最適化プログラムへの選択値 (キー範囲見積もり) の提供を容易にします。
  • 結合照会の場合、ユーザーの結合列に一致する索引を作成して、最適化プログラムが一致している行の平均数を決定しやすいようにします。
  • 照会に必要な列だけを指定することによって、余分なマッピングを最小にします。 例えば、SELECT * と指定する代わりに、SQL SELECT ステートメントで、照会に必要な列だけを指定します。 また、列を更新する必要がない場合には、FOR FETCH ONLY を指定します。
  • ユーザーの照会でテーブル走査を頻繁に使用する場合、物理ファイル・メンバーの再編成 (RGZPFM) コマンドを使用して削除済み行をテーブルから取り除くか、または 物理ファイルの変更 (CHGPF) REUSEDLT (*YES) コマンドを使用して削除済み行を再使用します。

次のオプションの使用を検討してください。

  • パフォーマンスの向上を図るために、ALWCPYDTA(*OPTIMIZE) を指定して、Query 最適化プログラムがデータの一時コピーを作成できるようにします。IBM® i Access 用 ODBC ドライバーおよび照会管理ドライバーは常にこのモードを使用します。ALWCPYDTA(*YES) が指定される場合、Query 最適化プログラムはデータのコピーなしで照会を実施しようとしますが、必要な場合にはコピーを作成することもできます。ALWCPYDTA(*NO) が指定されると、データのコピーは許可されません。 Query 最適化プログラムが一時コピーを使用しないプランを検出できない場合は、照会は実行できません。
  • SQL では、CLOSQLCSR(*ENDJOB) または CLOSQLCSR(*ENDACTGRP) を使用して、オープン・データ・パスが今後の呼び出しに対してオープンのままとなるようにします。
  • DLYPRP(*YES) を指定して、OPEN、EXECUTE、 または DESCRIBE ステートメントが実行されるまで SQL ステートメントの妥当性検査を遅らせます。 このオプションによって、余分な妥当性検査が除かれるため、パフォーマンスが向上します。
  • ALWBLK(*ALLREAD) を使用して、読み取り専用カーソルに対して行のブロック化を可能にします。