Hitachi

ノンストップデータベース HiRDB Version 10 UAP開発ガイド


4.14.2 留意事項

次の場合は,先頭からn行の検索結果を取得する機能を使用しても検索性能が向上しない,又は逆に検索性能が劣化する可能性があります。

  1. オフセット行数+リミット行数の値が,LIMIT句を指定しない場合と同じか,又は非常に近い場合

  2. ORDER BY句を指定しないでLIMIT句を指定した場合,どの行が検索結果になるかは一意に決まりません。LIMIT句を指定した場合は,ORDER BY句も同時に指定することをお勧めします。ただし,ORDER BY句を指定することで,SQLの最適化が異なるアクセスパスを選択し,検索処理の性能が劣化することがあります。SQLの最適化が選択したアクセスパスは,アクセスパス表示ユティリティ(pdvwopt)で確認ができます。

  3. ORDER BY句とLIMIT句を指定した場合,オフセット行数を基に読み飛ばした最終行,又はリミット行数を基に取得した最終行と,同じ値のソートキーを持つ行が複数あると,ソートキーが同じ値である行のうち,どの行が検索結果になるかは一意に決まりません。この条件に該当する行と同じ値のソートキーを持つ特定の行を検索結果とする場合,ソートキーの構成列を増やすことで,特定の行を検索結果にできます。ただし,ソートキーの構成列を増やすことで,SQLの最適化が異なるアクセスパスを選択し,検索処理の性能が劣化することがあります。SQLの最適化が選択したアクセスパスは,アクセスパス表示ユティリティ(pdvwopt)で確認ができます。

上記のような場合には,先頭からn行の検索結果を取得する機能は使用しないでください。

また,リミット行数が1以上で,かつオフセット行数+リミット行数の値が32,767以下の場合,作業表を作成しない代わりに,オフセット行数+リミット行数以内に入る行をメモリに保持します。このため,先頭からn行の検索結果を取得する機能を使用しない場合に比べて,メモリ所要量が増加します。メモリ所要量については,マニュアル「HiRDB システム導入・設計ガイド」の「先頭からn行の検索結果を取得する機能実行時に必要なメモリ所要量の求め方」を参照してください。