首页 > 其他 > 详细

聚合函数的优化

时间:2014-03-16 23:58:15      阅读:731      评论:0      收藏:0      [点我收藏+]
--创建测试表和索引
drop table t purge;
create table t as select * from dba_objects;
create index idx_object_id on t(object_id);

--全表扫描TABLE ACCESS FULL
select count(*) from t;

--索引扫描INDEX FAST FULL SCAN,加上非空判断之后,就会走索引扫描了
select count(*) from t where object_id is not null;

--为了避免这种蹩脚的写法,可以将该列设置为非空,或者设置为主键

--在使用类似于avg或者sum函数的时候,如果走索引也应该设置为非空
select avg(object_id) from t where object_id is not null;

--对于这条语句的执行效率和分开执行的效率是一致的
select avg(object_id),sum(object_id),count(*) from t where object_id is not null;

--对于max和min,只要有索引列,max和min无需设置非空,即可快速完成查询。使用的扫描方式是INDEX FULL SCAN,这种速度是非常快的
select max(object_id) from t;

--把两个放在一块写的时候就会换一种扫描方式INDEX FAST FULL SCAN,这样速度就会慢很多
select max(object_id),min(object_id) from t

--对于这种情况可以使用,这是对表进行INDEX FULL SCAN,执行的复杂度是单独执行的两倍,但是就这也比上面的情况快很多
select a.max ,b.min from (select max(object_id) max from t) a, (select min(object_id) min from t) b;


本文出自 “reminis-note” 博客,请务必保留此出处http://xiaoge90s.blog.51cto.com/6920186/1377572

聚合函数的优化,布布扣,bubuko.com

聚合函数的优化

原文:http://xiaoge90s.blog.51cto.com/6920186/1377572

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