これは最適化の非常に難解な領域であり、一般的な部分式の最適化です。あなたの例では、ほとんど違いはありません。はgroup by
データを並べ替えますが、これは平均を行うよりもはるかにコストがかかります。
など、count(distinct)
より高価な他の計算があります。その場合、あなたの質問はより明白になります。
サブクエリと比較するスティーブンのソリューションは、おそらくこの場合には十分に機能します。ただし、サブクエリは一時テーブルを作成するため、それ自体に多くのオーバーヘッドが発生します。したがって、リンゴとリンゴを比較していません。
本当に違いを比較したい場合は、次の比較を行ってください。クエリを比較します。
SELECT AVG(var1) AS var1_average, AVG(var2) AS var2_average,
(AVG(var1) + AVG(var2))/2.0 AS total_average
FROM readings;
に:
SELECT AVG(var1) AS var1_average, AVG(var2) AS var2_average
FROM readings;
ほぼ同じ時間がかかることに気付くでしょう。そうでない場合は、サブクエリ アプローチを使用できる可能性があります。または、アプリケーション レベルで平均計算を行うこともできます。