首页 > 其他 > 详细

count(*)与count列谁快谁慢

时间:2017-10-29 10:35:24      阅读:275      评论:0      收藏:0      [点我收藏+]

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列谁快谁慢

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!