■HAVING句にもWHERE句にも書ける条件

HAVING句にもWHERE句にも書ける条件は、「集約キーに対する条件」についてです。

・HAVVING句の役割は、「グループ」に対する条件を指定することです。

・WHERE句の役割は、「行」に対する条件を指定することです。

 

■HAVING句とWHERE句の内部的な処理の違い

データを集計する場合、RDBSM内部では、ソートが実行されています。

行の並べ替えが行われるソート処理は、負荷のかかる処理です。

・WHERE句で条件を指定した場合は、ソートの前に行が絞り込まれます。

・HAVING句で条件を指定した場合は、ソートが完了してグループ化された後で行が絞り込まれます。

 

WHERE句は絞り込んでからソートを行うので、ソートする行数が少なくて済み、処理速度が早く出ます。

そのため、WHERE句で書ける処理であれば、パフォーマンスの観点からWHEREを用いるのが望ましいでしょう。