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(*) 效率会比较高。
- 2 回答
- 0 关注
- 762 浏览
添加回答
举报
0/150
提交
取消