クエリは巨大なテーブルで実行されます (10 億レコード以上)
identcol > (ParamTable から bigint(identval) を選択) である TableA から Col1 を選択します。
( identval
datatype is character and identcol
is BIGINT
) これには長い時間がかかり、完全なテーブル スキャンが実行されます。サブクエリを置き換えて、identcol の where 句で数値を使用すると、その列のインデックスが使用され始めます。
リテラル値を指定せずに DB2 にこのインデックスを強制的に使用させる方法はありますか? (AIX 上の DB2 9.7 luw)
編集: BETWEEN がサブクエリと上限値で機能し、インデックスも使用していることがわかりました。また、BIGINT への明示的なキャストを削除すると、インデックスの使用が開始されます。しかし、それでも技術的な説明/ポインターを知りたいです。ありがとう!