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 关注
 - 790 浏览
 
添加回答
举报
0/150
	提交
		取消
	