2022年索引的五种使用模式 3.pdf
《2022年索引的五种使用模式 3.pdf》由会员分享,可在线阅读,更多相关《2022年索引的五种使用模式 3.pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验目的:深刻体会索引对数据库的巨大影响,了解索引不同实验背景知识:索引在数据库中是很重要的。没有索引的数据库是不可想象的,我们普通的表是无序的,也叫做堆表 (heap table) 。而索引是有序的结构,通过索引可以快速定位我们要找的行,避免全表扫描。索引的访问模式有五种:1、INDEX UNIQUE SCAN :效率最高,主键或唯一索引;2、INDEX FAST FULL SCAN:读的最块,可以并行访问索引,但输出不按顺序;3、INDEX FULL SCAN:有顺序的输出,不能并行读索引;4、INDEX RANGE SCAN:给定的区间查询;5、INDEX SKIP SCAN:联合索引,
2、不同值越少的列,越要放在前面。参数 optimizer_index_cost_adj 定义了索引的权重,该值越大, 数据库认为使用索引的成本越高, 默认值为100。如果设置为50,那么数据库认为使用索引的代价比它计算出来的少一半;如果你设置为1000,那么认为你使用索引的成本为计算出来的10 倍。该值最大为10000,最小为1。实验步骤:1、 登录到 scott 用户,创建测试表SQL conn scott/tiger Connected. SQL drop table t1 purge; Table dropped. SQL create table t1 as select * from
3、dba_objects; Table created. 2、 收集测试表的统计信息,并建立索引SQL analyze table t1 compute statistics; Table analyzed. SQL create unique index i2t1 on t1(object_id); Index created. SQLset autot traceonly explain 3、 使用不同的索引访问模式查询测试表(一) INDEX UNIQUE SCAN 效率最高,主键或唯一索引SQL select * from t1 where object_id=9999; Executi
4、on Plan - Plan hash value: 1026981322 - | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | - | 0 | SELECT STATEMENT | | 1 | 87 | 2 (0)| 00:00:01 | | 1 | TABLE ACCESS BY INDEX ROWID| T1 | 1 | 87 | 2 (0)| 00:00:01 | 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -
5、- 第 1 页,共 5 页 - - - - - - - - - |* 2 | INDEX UNIQUE SCAN | I2T1 | 1 | | 1 (0)| 00:00:01 | 执行计划为唯一定位,最快。(二) INDEX FAST FULL SCAN 读的最块,可以并行访问索引,但输出不按顺序(1)直接执行查询SQL select object_id from t1 ; Execution Plan - Plan hash value: 3617692013 - | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | - |
6、 0 | SELECT STATEMENT | | 49859 | 194K| 337 (1)| 00:00:07 | | 1 | TABLE ACCESS FULL| T1 | 49859 | 194K| 337 (1)| 00:00:07 | 可见,查询没有使用索引,而进行了全表扫描。这是因为object_id 可能有 null 值,而null 不入普通索引,我们进行全索引的扫描就会得到错误的结果。(2)删除表中object_id 为 null 的记录,并给object_id 列加上非空约束:SQL delete t1 where object_id is null; SQL alter
7、table t1 modify (OBJECT_ID not null); (3)再次执行相同查询SQL select object_id from t1 ; Execution Plan - Plan hash value: 2003301201 - | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | - | 0 | SELECT STATEMENT | | 49859 | 194K| 51 (2)| 00:00:02 | | 1 | INDEX FAST FULL SCAN| I2T1 | 49859 | 194K| 5
8、1 (2)| 00:00:02 | 可见,查询计划仅扫描了索引,代价为51。因为所有的行都在索引中了,使用索引不会造成错误的结果。因为我们的输出没有要求有序,所以数据库将高水位下所有的索引块都读一遍就可以了,这就叫索引的快速全扫描。由此可知, 要想索引可用,应对索引列进行非空约束。(三) INDEX FULL SCAN 有顺序的输出,不能并行读索引SQL select object_id from t1 order by object_id ; Execution Plan - Plan hash value: 1111347323 - | Id | Operation | Name | Ro
9、ws | Bytes | Cost (%CPU)| Time | - | 0 | SELECT STATEMENT | | 49859 | 194K| 106 (2)| 00:00:03 | | 1 | INDEX FULL SCAN | I2T1 | 49859 | 194K| 106 (2)| 00:00:03 | - 执行计划为全扫描索引,含义是按照叶子的大小顺序来读索引,因为我们要求输出是有名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - -
10、 - - - - 序的。代价为106,高于快速全扫描,因为我们不是将高水位的块连续读,而是按照叶子的顺序读。正因为是按照叶子的顺序读,所以不能并行操作。(四) INDEX RANGE SCAN 给定的区间查询SQL select * from t1 where object_id between 300 and 400; Execution Plan - Plan hash value: 1490405106 - | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | - | 0 | SELECT STATEMENT | | 9
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年索引的五种使用模式 2022 索引 使用 模式
限制150内