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 は除去可能です。