我对SQL非常陌生。有谁愿意解释这两个查询之间是否有区别?
SELECT author, sum(words) AS total_words
FROM books
GROUP BY author
HAVING sum(words) > 10000000;
SELECT author, sum(words) AS total_words
FROM books
GROUP BY author
HAVING total_words > 10000000;
答案 0 :(得分:0)
查询之间没有实质性差异。他们应该返回完全相同的结果集,并具有相同或基本相同的执行计划。
一个问题是sum(words)
是否被评估一次或两次。那可能取决于数据库。但是,对于优化器而言,不难发现该表达式只应计算一次。即使计算两次,sum()
与group by
所需的工作相比还是非常便宜的。