我是现在的工作品牌和新品,我看到以下SQL句子。
SELECT t.name store,p.id, p.name,count(1)
FROM regular_shippings sh
JOIN
products p ON matching columns.
ANOTHER JOINS
WHERE criteria
AND anotherCriteria
GROUP BY p.id
HAVING count(1) > 0
ORDER BY t.name,count(1) desc;
我的第一印象是计算记录
the select
也在
having by
也在
order by
对我来说影响性能最好使用别名。但这个断言是否正确?或者不是只做一次工作?或者引擎足够智能识别它,只是在后面的调用中替换先前的count(1)值?
我的意思是这个查询会表现得更好吗?
SELECT t.name store,p.id, p.name,count(1)c
FROM regular_shippings sh
JOIN
products p ON matching columns.
ANOTHER JOINS
WHERE criteria
AND anotherCriteria
GROUP BY p.id
HAVING c>0
ORDER BY t.name,c desc;
对不起,如果问题很简单!
COUNT(1)
是聚合的结果(GROUP BY
)。它用于
SELECT
子句,HAVING
条款中限制结果和ORDER BY
条款中进行排序。这不是三个不同的计数。所以你是否给它别名并不重要。
(旁注:大多数DBMS甚至不允许在SELECT
中使用HAVING
子句中给出的别名,因为HAVING
应该在SELECT
之前出现。)