M_1*_*M_1 41 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
Run Code Online (Sandbox Code Playgroud)
要么
SELECT NR_DZIALU, COUNT (NR_DZIALU) AS LICZ_PRAC_DZIALU
FROM PRACOWNICY
WHERE NR_DZIALU = 30
GROUP BY NR_DZIALU
Run Code Online (Sandbox Code Playgroud)
这两个查询是等效的,您的DBMS查询优化器应该识别这个并生成相同的查询计划.它可能没有,但情况相当容易识别,所以我希望任何现代系统 - 甚至是Sybase - 来处理它.
应使用HAVING子句对组函数应用条件,否则可以将它们转换为WHERE条件.例如.如果你想将查询限制在COUNT(DZIALU)> 10的组,比如说,你需要将条件置于HAVING中,因为它作用于组,而不是单个行.