Observation: COUNT(*) for Large Result Set(監視レポート:大きな結果セットに対するCOUNT(*))

大きくなる可能性のある結果セットに対して、COUNTの列関数を適用しています。実際の修飾行数ではなく、1つ以上の行の存在を判別するためだけにCOUNT(*)を使用している場合は、述部リストが満たされたら1つの行を戻すようにステートメントをコーディングし直してください。これを行うには、シングルトンSELECTをコーディングして、SQLCODEをテストします。SQLCODEが0の場合、1つの行が修飾します。SQLCODEが-811の場合、複数の行が修飾します。もう1つの方法は、必要な値の特殊なオカレンスの数をカウントすることです。

以下の例では、ある従業員がエンジニアかどうかを判別しています。

SELECT 
COUNT(DISTINCT JOB) 
FROM 
EMP 
WHERE 
JOB = 'ENGINEER' 

DB2がJOB列にENGINEERを含む最初のEMP行を見つけると、処理は終了し、1の値を戻します。以下のように、COUNT関数をリテラル定数に置き換えることができます。

SELECT

FROM 
EMP 
WHERE 
JOB = 'ENGINEER'