Oracle数据库--索引讲义PPT(15张)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
19.05.2019
HANMENG2010
9
eg:比较创建索引前后系统的开销。
SQL> set autotrace on explain ---查询系统的开销,不显示查询结果。
SQL> select ename from emp where ename='SMITH';
| Id | Rows | Bytes | Cost (%CPU)| Time |
第十章 索引
重点内容:创建索引。 学时:1-2课时。
本章内容
1. 索引概述 2. B树索引与位图索引 3. 创建索引 4. 删除索引 5. 查看索引
19.05.2019
HANMENG2010
2
1、索引概述
索引是为了加速对表中元组的检索而创 建的一种存储结构。
通过使用索引加速行的检索,但减慢更 新的速度。
INDEX_NAME INDEX_TYPE
---------------------- ----------------------------
PK_EMP
NORMAL
UNIQUENES --------UNIQUE
19.05.2019
HANMENG2010
14
•
1、有时候,我们活得累,并非生活过于刻薄,而是我们太容易被外界的氛围所感染,被他人的情绪所左右。
HANMENG2010
4
2、B树索引与位图索引
B树索引,即平衡树索引,是最常用的索引方式, 结构类似于二叉树。 关键点:索引条目和数据行之间存在一一对应关系, 即一条索引条目指向一行。
位图索引,适用于数据高度重复并且通常只读的 数据。 关键点:一个索引条目使用一个位图同时指向多行。
19.05.2019
19.05.2019
HANMENG2010
8
3、管理索引
索引使用原则: 表中导入数据后再创建索引。否则每次表中
插入数据时都必须更新索引。 在适当的表和字段上创建索引。如果经常检
索的数据少于表中的15%则需要创建索引。 限制表中索引的数目。索引越多,在修改表
时对索引做出的而修改的工作量越大。
--------------------------------------------------------------
| 0 | 1| 7|
3 (0)| 00:00:01 |
SQL> create index idx_emp on emp(ename); SQL> select ename from emp where ename='SMITH';
1010 ROWID 1011 ROWID 1012 ROWID 1013 ROWID 1014 ROWID
1015 ROWID 1016 ROWID 1017 ROWID 1018 ROWID 1019 ROWID
图2 B树索引的逻辑结构
19.05.2019
HANMENG2010
6
B树索引的特点: 1. 树的高度一般在2或3。 2. 叶子节点中,每条索引目录指向某一行数据。
10
(1)创建索引
语法规则: CREATE [UNIQUE] [BITMAP] INDEX <索引名> ON <表名> (<列名> …);
eg: SQL> create index idx_emp on emp(ename);
19.05.2019
HANMENG2010
11
其中: UNIQUE 表示建立唯一性索引,基于的列值
MANAGER 0 0 0 1 0 1 1 0 0 0 0 0 0 0
PTRSIDENT 0 0 0 0 0 0 0 0 0 1 0 0 0 0
SALESMAN 0 1 1 0 1 0 0 0 0 0 0 0 0 0
问题:select count(*) from emp where job=‘CLERK’ or job=‘MANAGER’; 怎么找到结果?
| Id | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------
| 0 | 1| 7|
1 (0)| 00:00:01 |
19.05.2019
HANMENG2010
必须唯一。 BITMAP 表示建立位图索引。 ASC/DESC 升序或降序。默认升序。
19.05.2019
HANMENG2010
12
(2)删除索引 当索引不需要使用时,删除该索引,释放
其占用的空间。 语法格式: DROP INDEX index_name eg: SQL>drop index idx_emp;
19.05.2019
HANMENG2010
13
(3)查询索引信息
ALL_INDEXES:用户可以访问的所有表上的索引。 USER_INDEXES:用户所拥有表上的索引。
eg:查询emp表中索引名称,类型和是否唯一性索引。 SQL> select index_name,index_type,uniqueness from user_indexes where table_name='EMP';
更新表中每条数据时都需要更新索引。 Oracle自动使用、维护索引。
19.05.2019
HANMENG2010
3
编号 001 002 003 …
Rowid
编号 001 002 003 ….
颜色 绿 红 红 …
数量 3000 5000 6000 ...
尺寸 中 中 小 …
图1 表和索引的关系
19.05.2019
HANMENG2010
5
来自百度文库
如何查找编号为1016的节点?
1000 1005
1000 1010
1010 1015
1000 ROWID 1001 ROWID 1002 ROWID 1003 ROWID 1004 ROWID
1005 ROWID 1006 ROWID 1007 ROWID 1008 ROWID 1009 ROWID
19.05.2019
HANMENG2010
7
如何在emp表的job列创建一个位图索引?
表1 位图索引
值/行
1 2 3 4 5 6 7 8 9 10 11 12 13 14
ANALYST 0 0 0 0 0 0 0 1 0 1 0 0 1 0
CLERK
100 0 0 0 0 0 0 0 1 1 0 1