小编典典

在SQL中,count(*)和count('x')之间有什么区别?

sql

我有以下代码:

SELECT <column>, count(*)
FROM <table>
GROUP BY <column> HAVING COUNT(*) > 1;

如果我将COUNT(*)替换为COUNT(’x’),结果或性能会有所不同吗?


阅读 223

收藏
2021-03-23

共1个答案

小编典典

这么说,SELECT COUNT(*) vs COUNT(1)导致您的DBMS返回“列”简直是糊涂。 可能
很久以前就是这种情况,但是任何自重的查询优化器都会选择一些快速方法来对表中的行进行计数-两者之间 没有 性能差异SELECT COUNT(*),COUNT(1), COUNT('this is a silly conversation')

而且,SELECT(1) vs SELECT(*)INDEX的使用不会有任何区别-SELECT( n ) into SELECT(*)不管怎么说,大多数DBMS实际上都会进行优化。请参阅ASK TOM:SELECT(n) into SELECT(*)十年来,Oracle一直在进行优化(如果不是更长的话):http://asktom.oracle.com/pls/asktom/f?p=100:11
:0 ::::P11_QUESTION_ID:1156151916789

问题在于count(col)到count( )的转换 *_* 03/23/00 05:46 pm
*一种解决方法是将事件10122设置为关闭count(col)- > count(
)优化。 另一种解决方法是_,当col具有NOT
NULL约束时, 将count(col)更改为count( ),这意味着相同。错误号是1215372。

需要注意的一件事-
如果您正在使用COUNT(col)(不要!)并且col被标记为NULL,那么它实际上将必须计算表中的出现次数(通过索引扫描,直方图等)它们是否存在,否则进行全表扫描)。

底线:如果您想要的是表中的行数,请使用COUNT(*)

2021-03-23