oracle 降序索引
来源:互联网 发布:html编辑软件 编辑:程序博客网 时间:2024/06/04 18:43
创建数据:
SQL> create table tb_desc_index 2 ( 3 user_year int not null, 4 user_month int not null, 5 user_date int not null, 6 user_name varchar2(20) null 7 );表已创建。SQL> DECLARE 2 V_DATE INT; 3 V_MONTH INT; 4 V_YEAR INT; 5 BEGIN 6 FOR I IN 1..1000 LOOP 7 V_DATE := I mod 30; 8 V_DATE := V_DATE + 1; 9 V_MONTH := I mod 12; 10 V_MONTH := V_MONTH + 1; 11 V_YEAR := 2010 + I / 100; 12 INSERT INTO tb_desc_index VALUES (V_YEAR, V_MONTH, V_DATE, 'user_' || I); 13 END LOOP; 14 COMMIT; 15 END; 16 /PL/SQL 过程已成功完成。
创建降序索引:
SQL> create index idx_desc_index on tb_desc_index(user_year desc, user_month desc, user_date desc);索引已创建。
查询并查看执行计划:
SQL> set autotrace traceonlySQL> set linesize 120SQL> select * from tb_desc_index 2 where user_year <= 2014 and user_month <= 7 and user_date <= 20 3 order by user_year desc, user_month desc, user_date desc;已选择181行。执行计划----------------------------------------------------------Plan hash value: 4208050085----------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |----------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 176 | 3344 | 2 (0)| 00:00:01 || 1 | TABLE ACCESS BY INDEX ROWID| TB_DESC_INDEX | 176 | 3344 | 2 (0)| 00:00:01 ||* 2 | INDEX RANGE SCAN | IDX_DESC_INDEX | 1 | | 2 (0)| 00:00:01 |----------------------------------------------------------------------------------------------Predicate Information (identified by operation id):--------------------------------------------------- 2 - access(SYS_OP_DESCEND("USER_YEAR")>=HEXTORAW('3DEAF0FF') AND SYS_OP_DESCEND("USER_MONTH")>=HEXTORAW('3EF7FF') AND SYS_OP_DESCEND("USER_DATE")>=HEXTORAW('3EEAFF') AND SYS_OP_DESCEND("USER_YEAR") IS NOT NULL) filter(SYS_OP_UNDESCEND(SYS_OP_DESCEND("USER_YEAR"))<=2014 AND SYS_OP_UNDESCEND(SYS_OP_DESCEND("USER_MONTH"))<=7 AND SYS_OP_UNDESCEND(SYS_OP_DESCEND("USER_DATE"))<=20 AND SYS_OP_DESCEND("USER_YEAR")>=HEXTORAW('3DEAF0FF') AND SYS_OP_DESCEND("USER_MONTH")>=HEXTORAW('3EF7FF') AND SYS_OP_DESCEND("USER_DATE")>=HEXTORAW('3EEAFF') )统计信息---------------------------------------------------------- 0 recursive calls 0 db block gets 61 consistent gets 0 physical reads 0 redo size 5071 bytes sent via SQL*Net to client 517 bytes received via SQL*Net from client 14 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 181 rows processedSQL>
看看普通索引会怎么样:
SQL> select * from tb_desc_index 2 where user_year <= 2014 and user_month <= 7 and user_date <= 20 3 order by user_year desc, user_month desc, user_date desc;已选择181行。执行计划----------------------------------------------------------Plan hash value: 771444667------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 176 | 3344 | 4 (25)| 00:00:01 || 1 | SORT ORDER BY | | 176 | 3344 | 4 (25)| 00:00:01 ||* 2 | TABLE ACCESS FULL| TB_DESC_INDEX | 176 | 3344 | 3 (0)| 00:00:01 |------------------------------------------------------------------------------------Predicate Information (identified by operation id):--------------------------------------------------- 2 - filter("USER_YEAR"<=2014 AND "USER_MONTH"<=7 AND "USER_DATE"<=20)统计信息---------------------------------------------------------- 1 recursive calls 0 db block gets 7 consistent gets 0 physical reads 0 redo size 5071 bytes sent via SQL*Net to client 517 bytes received via SQL*Net from client 14 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 181 rows processedSQL>
做这次实验时,一开始使用的SQL是:
SQL> select user_year from tb_desc_index 2 where user_year in (2010, 2011, 2012) 3 order by user_year desc;select user_year from tb_desc_index*第 1 行出现错误:ORA-03113: 通信通道的文件结束
查原因,一直没查到。
好像直接select字段名就不行。
版本10g。也许是oracle的一个bug。
0 0
- Oracle 降序索引
- Oracle 降序索引
- Oracle 降序索引
- oracle 降序索引
- Oracle 编程艺术--降序索引读书笔记
- 降序索引
- 关于Oracle降序索引的定意及回溯
- Oracle 11.2.0.1.0中降序索引的bug
- 索引的升序 降序
- 12.4.4 降序索引
- 降序索引浅析
- Oracle 索 引 的 分 类 :降序索引和位图索引
- 关于索引的降序排列
- MYSQL 降序索引和减轻索引扫描
- 降序索引和减轻索引扫描
- 降序索引和减轻索引扫描
- 各种索引的结构分析 降序索引和位图索引
- oracle 默认是升序还是降序
- MapReduce编程实战之“初识”
- AndroidAudio soundPool Call problem
- 一个简单的变换
- 5种方法激发孩子音乐兴趣
- HDU - 2642 Stars
- oracle 降序索引
- 排序之直接插入排序
- POJ 1321 棋盘问题
- 【LB】图形化编程与二叉树的应用
- DicomServer测试环境搭建之一:Conquest DICOM software
- WIndows学习心得【设计一个矩形】
- 函数指针的好处
- textField
- javascript eval和JSON之间的联系