码迷,mamicode.com
首页 > 其他好文 > 详细

count(*)快还是count(列)快

时间:2018-07-10 23:37:24      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:就是   启示   lte   row   odi   sele   null   因此   count   

一、没建索引一样快

create table t as select * from dba_objects;
update t set object_id =rownum ;

 

此时没建索引,因此他们是一样快。

select count(*) from t;
select count(object_id) from t;

二、为列object_id创建索引

create index idx_object_id on t(object_id);

此时count(object_id)比count(*)快很多

 

三、修改列object_id,设置不允许为空

alter table T modify object_id  not  null;

此时count(object_id)和count(*)一样快。

 

四、最佳字段顺序(越往后的列访问CPU开销大)

给我们开发员的启示就是:把最常用的列建在最前面。不常用的列建在后面。

优化器是这么搞的:列的偏移量决定性能,列越靠后,访问的开销越大。由于count(*)的算法与列偏移量无关,所以count(*)最快。

 

count(*)快还是count(列)快

标签:就是   启示   lte   row   odi   sele   null   因此   count   

原文地址:https://www.cnblogs.com/fjzsl/p/9291942.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!