sql - 哪个 SQL 语句更快? (有与在哪里......)

标签 sql performance grouping if-statement

SELECT NR_DZIALU, COUNT (NR_DZIALU) AS LICZ_PRAC_DZIALU
    FROM  PRACOWNICY
    GROUP BY NR_DZIALU
    HAVING NR_DZIALU = 30

SELECT NR_DZIALU, COUNT (NR_DZIALU) AS LICZ_PRAC_DZIALU
    FROM PRACOWNICY
    WHERE NR_DZIALU = 30
    GROUP BY NR_DZIALU

最佳答案

理论(我的意思是 SQL Standard )说 WHERE 在返回行之前限制结果集,而 HAVING 在返回所有行之后限制结果集。所以 WHERE 更快。在这方面,在符合 SQL 标准的 DBMS 上,仅在无法将条件放在 WHERE 上的情况下使用 HAVING(如某些 RDBMS 中的计算列)。

您可以查看两者的执行计划并自行检查,没有什么比这更好的了(使用您的数据在特定环境中测量特定查询。)

关于sql - 哪个 SQL 语句更快? (有与在哪里......),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/328636/

相关文章:

c# - 从 C#/ASP.NET 应用程序将数据插入 SQL Server

c++ - OpenMP中的每个线程执行相同数量的工作是否正常?

f# - 分组交替数据

python - 删除数据框中所有数据点中的多余字符

Javascript:在不记得最后一场比赛的情况下在正则表达式中反向引用

javascript - 如何重命名 vuetify 数据表组标签?

sql - Postgres 专属标签搜索

c# - 如何在 mysql 中使用触发器将列的值从特定日期更新到仅针对唯一客户 ID 的日期

mysql - 使用 WHERE 和 GROUP BY 进行查询的最有效索引?

multithreading - Fortran 基本函数与基本子例程