DISTINCT の最適化
DISTINCT は、ある特定の値を他の値と比較するために使用されます。
SQL で特殊値を戻す照会を作成する方法は 2 つあります。 1 つの方法では次のように DISTINCT キーワードを使用します。
SELECT DISTINCT COL1, COL2
FROM TABLE1
2 つ目の方法では次のように GROUP BY を使用します。
SELECT COL1, COL2
FROM TABLE1
GROUP BY COL1, COL2
DISTINCT を含み、SQE を使って実行される照会はすべて、GROUP BY を使用する照会に書き換えられます。この書き換えにより、照会は DISTINCT を使用して、最適化プログラムで使用可能な多くのグループ化技法を利用できるようになります。
DISTINCT からグループ化へのインプリメンテーション
以下の照会の例には、DISTINCT があります。
SELECT DISTINCT COL1, COL2
FROM T1
WHERE COL2 > 5 AND COL3 = 2
最適化プログラムは、これを次のような照会に書き換えます。
SELECT COL1, COL2
FROM T1
WHERE COL2 > 5 AND COL3 = 2
GROUP BY COL1, COL2
DISTINCT の除去
ファイル全体に DISTINCT を含む照会の集約 (グループ化または選択ではない) では、DISTINCT を除去することができます。 例えば、DISTINCT を持つ次の照会をご覧ください。
SELECT DISTINCT COUNT(C1), SUM(C1)
FROM TABLE1
最適化プログラムはこの照会を次のように書き換えます。
SELECT COUNT(C1), SUM(C1)
FROM TABLE1
DISTINCT フィールドと GROUP BY フィールドが同一の場合、DISTINCT は除去可能です。 DISTINCT フィールドが GROUP BY フィールドのサブセットである場合 (そして集約が存在しない場合)、DISTINCT は除去可能です。