关于select count的问题

SELECT count(0)  FROM table

SELECT count(1)  FROM table

SELECT count(colname)  FROM table

SELECT count(*)  FROM table

这四个语句有什么样的区别啊?

在网上查了很久还是迷茫.

自己也动手测试了一下.

还在晕着呢.


慕森卡
浏览 763回答 2
2回答

素胚勾勒不出你

返回结果都一样,但底层操作是不一样的。 对于前三种 count ,数据库只会使用其对应的列上的索引来计算,如果其对应列上没有索引,count的执行效率会非常低。比如SELECT COUNT(COLNAME);如果 COLNAME 这个列上没有建索引,那就会导致数据库按物理顺序扫描数据文件,效率会很低。而且 COLNAME 上建聚集索引和非聚集索引的效率也是不一样的。对于 count(*) 不同数据库优化不一样,SQLSERVER 2005 是首先找聚集索引,没有的话找任意一个非聚集索引,如果还没有,那就按物理堆积来查找。所以偷懒的方法是用 count(*)  效率会比较高。

拉莫斯之舞

都一样。都是返回表内所有行数。  
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server