■HAVING句にもWHERE句にも書ける条件
HAVING句にもWHERE句にも書ける条件は、「集約キーに対する条件」についてです。
・HAVVING句の役割は、「グループ」に対する条件を指定することです。
・WHERE句の役割は、「行」に対する条件を指定することです。
■HAVING句とWHERE句の内部的な処理の違い
データを集計する場合、RDBSM内部では、ソートが実行されています。
行の並べ替えが行われるソート処理は、負荷のかかる処理です。
・WHERE句で条件を指定した場合は、ソートの前に行が絞り込まれます。
・HAVING句で条件を指定した場合は、ソートが完了してグループ化された後で行が絞り込まれます。
WHERE句は絞り込んでからソートを行うので、ソートする行数が少なくて済み、処理速度が早く出ます。
そのため、WHERE句で書ける処理であれば、パフォーマンスの観点からWHEREを用いるのが望ましいでしょう。