为了账号安全,请及时绑定邮箱和手机立即绑定

关于select count的问题

关于select count的问题

慕森卡 2018-12-03 14:17:34
SELECT count(0)  FROM tableSELECT count(1)  FROM tableSELECT count(colname)  FROM tableSELECT count(*)  FROM table这四个语句有什么样的区别啊?在网上查了很久还是迷茫.自己也动手测试了一下.还在晕着呢.
查看完整描述

2 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

返回结果都一样,但底层操作是不一样的。 对于前三种 count ,数据库只会使用其对应的列上的索引来计算,如果其对应列上没有索引,count的执行效率会非常低。比如SELECT COUNT(COLNAME);

如果 COLNAME 这个列上没有建索引,那就会导致数据库按物理顺序扫描数据文件,效率会很低。

而且 COLNAME 上建聚集索引和非聚集索引的效率也是不一样的。

对于 count(*) 不同数据库优化不一样,SQLSERVER 2005 是首先找聚集索引,没有的话找任意一个非聚集索引,如果还没有,那就按物理堆积来查找。所以偷懒的方法是用 count(*)  效率会比较高。


查看完整回答
反对 回复 2018-12-07
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

都一样。都是返回表内所有行数。  

查看完整回答
反对 回复 2018-12-07
  • 2 回答
  • 0 关注
  • 762 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信