为什么desc类型的索引不能被用与计算 min/max?
来源:互联网 发布:英克软件 下载 编辑:程序博客网 时间:2024/06/05 23:54
不管是desc还是asc, 索引中已经排好了顺序;计算min/max直接可以访问相关索引结构,无需全表扫描; 如下所式: desc索引无法支持min/max的查询;而asc类型的索引确实可以.为何这样?是跟索引的物理设计和实现有关吗?
SQL> create table t as select *from dba_objects;
表已创建。
SQL> create index t_idx on t(object_id desc)
2 ;
索引已创建。
SQL> analyze table t compute statistics;
表已分析。
SQL> select max(object_id) from t;
MAX(OBJECT_ID)
--------------
31801
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=43 Card=1 Bytes=4)
1 0 SORT (AGGREGATE)
2 1 TABLE ACCESS (FULL) OF 'T' (Cost=43 Card=30188 Bytes=120
752)
SQL> select min(object_id) from t;
MIN(OBJECT_ID)
--------------
2
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=43 Card=1 Bytes=4)
1 0 SORT (AGGREGATE)
2 1 TABLE ACCESS (FULL) OF 'T' (Cost=43 Card=30188 Bytes=120
752)
SQL> select min(object_id) from t;
MIN(OBJECT_ID)
--------------
2
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=43 Card=1 Bytes=4)
1 0 SORT (AGGREGATE)
2 1 INDEX (FULL SCAN (MIN/MAX)) OF 'T_IDX2' (NON-UNIQUE) (Co
st=43 Card=30188 Bytes=120752)
SQL> create table t as select *from dba_objects;
表已创建。
SQL> create index t_idx on t(object_id desc)
2 ;
索引已创建。
SQL> analyze table t compute statistics;
表已分析。
SQL> select max(object_id) from t;
MAX(OBJECT_ID)
--------------
31801
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=43 Card=1 Bytes=4)
1 0 SORT (AGGREGATE)
2 1 TABLE ACCESS (FULL) OF 'T' (Cost=43 Card=30188 Bytes=120
752)
SQL> select min(object_id) from t;
MIN(OBJECT_ID)
--------------
2
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=43 Card=1 Bytes=4)
1 0 SORT (AGGREGATE)
2 1 TABLE ACCESS (FULL) OF 'T' (Cost=43 Card=30188 Bytes=120
752)
SQL> select min(object_id) from t;
MIN(OBJECT_ID)
--------------
2
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=43 Card=1 Bytes=4)
1 0 SORT (AGGREGATE)
2 1 INDEX (FULL SCAN (MIN/MAX)) OF 'T_IDX2' (NON-UNIQUE) (Co
st=43 Card=30188 Bytes=120752)
0 0
- 为什么desc类型的索引不能被用与计算 min/max?
- 索引易错点:索引与max(),min()
- float与double的MAX-MIN
- 关于min(), max()函数访问索引的方法
- 关于min(), max()函数访问索引的方法
- max与min
- std::min and std::max与windows.h定义的min和max宏相冲突.
- Max Min的使用
- Math.min() 为什么比 Math.max() 大?
- std::min,std::max 与 MFC冲突的解决
- group by与avg(),max(),min(),sum()函数的关系
- 提示与“MAX”声明中的类型不匹配,不能编译
- VS2015--win32工程配置的一些想法之算法min/max与windows中的 min/max宏冲突
- max(min)-device-width和max(min)-width的区别
- max(min)-device-width和max(min)-width的区别
- max min的小问题
- max/min函数的用法
- 解决IE6中不能实现min-width和max-width的问题
- vim常用命令总结
- 14的路 WordPress中的cookie机制
- Copy解密
- Struts2拦截器配置
- [mercurial] web server搭建过程及相关问题的解决
- 为什么desc类型的索引不能被用与计算 min/max?
- Oracle的Package的作用
- java.io.IOException: open failed: EACCES (Permission denied)问题解决
- easyui Datagrid+searchbox 实现搜索功能
- C#使用事务的时候获取提交之前的数据!
- 测试部工作总结
- ubuntu12.04更换软件源
- During sturtup program exited with code 0xc0000139的解决办法!
- 运动控制部工作总结