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

count(*)与count列谁快谁慢

时间:2017-10-29 11:20:03      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:sele   count   upd   mod   odi   alter   性能   rom   rac   

drop table t purge;
create table t as select * from dba_objects;
--alter table T modify object_id null;
update t set object_id =rownum ;
set timing on
set linesize 1000
set autotrace on

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

--看来count(列)比count(*) 更快是谣传,明明是一样快嘛,真相是这样吗?
---NO!NO!NO!请继续往下看


--来来,建个索引看看
create index idx_object_id on t(object_id);
select count(*) from t;
/


select count(object_id) from t;
/

--哇,原来真的是用COUNT(列)比COUNT(*)要快啊,因为COUNT(*)不能用到索引,而COUNT(列)可以,真相真是如此吗?

--NONONO!还请看官继续往下看

alter table T modify object_id not null;

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

--看来count(列)和count(*)其实一样快,如果索引列是非空的,count(*)可用到索引,此时一样快!真相真是如此吗?

---NONONO!其实两者根本没有可比性,性能比较首先要考虑写法等价,这两个语句根本就不等价!!!

count(*)与count列谁快谁慢

标签:sele   count   upd   mod   odi   alter   性能   rom   rac   

原文地址:http://www.cnblogs.com/yangyanhao/p/7749422.html

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