HAVING在别名上与不使用HAVING之间是否存在性能差异?

时间:2010-11-27 10:59:28

标签: sql mysql database having

好的,我正在通过bit了解bit,了解HAVING的含义。

现在,我的问题是这两个查询是否具有不同的性能特征:

没有

SELECT x + y AS z, t.*  FROM t
WHERE 
x = 1 and
x+y = 2

HAVING

SELECT x + y AS z, t.*  FROM t
WHERE 
x = 1
HAVING
z = 2

2 个答案:

答案 0 :(得分:1)

是的它应该是不同的 - (1)预计会更快。

确保首先运行主查询然后应用过滤器 - 因此它基本上适用于(查询减去)返回的数据集。

第一个查询应该更好,因为它根本不会选择那些记录。

答案 1 :(得分:1)

HAVING用于包含GROUP BY的查询或返回包含聚合函数结果的单行。例如,SELECT SUM(scores) FROM t HAVING SUM(scores) > 100返回一行,或者根本不返回任何行。

SQL标准认为第二个查询无效,某些数据库系统不接受该查询。