当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在SQL中,count(*)和count('x')之间有什么区别?》经验,为你挑选了1个好方法。

我有以下代码:

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


如果我用COUNT('x')替换COUNT(*),结果或性能是否有任何差异?

(这个问题与之前的问题有关)



1> Matt Rogish..:

要说SELECT COUNT(*) vs COUNT(1)你的DBMS返回"列"的结果是纯粹的铺位.这可能是很久很久以前的情况,但任何自尊的查询优化器都会选择一些快速的方法来计算表中的行 - 两者之间没有性能差异SELECT COUNT(*), COUNT(1), COUNT('this is a silly conversation')

此外,SELECT(1) vs SELECT(*)INDEX的使用不会有任何差异 - 大多数DBMS实际上都会进行优化SELECT( n ) into SELECT(*).请参阅ASK TOM:Oracle已经在SELECT(n) into SELECT(*)十年的大部分时间内进行了优化,如果不是更长时间: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设置为关闭计数(col) - > count()优化.另一个解决方法是将count(col)更改为count(),当col具有NOT NULL约束时,它意味着相同.错误号是1215372.

有一点需要注意 - 如果你使用COUNT(col)(不要!)并且col被标记为NULL,那么它实际上必须计算表中出现的次数(通过索引扫描,直方图等,如果它们存在,或者全表扫描,否则).

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

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有