索引:
1、 ROWID 的概念
2、 索引的概念:
3、 唯一索引
4、 组合索引
5、 位图索引
6、 基于函数的索引
一、 ROWID 的概念
存储了 row 在数据文件中的具体位置:64 位编码的数据,A-Z, a-z, 0-9, +, 和 /,
row 在数据块中的存储方式
SELECT ROWID, last_name FROM hr.employees WHERE department_id = 20;
比如:OOOOOOFFFBBBBBBRRR
OOOOOO:data object number, 对应 dba_objects.data_object_id
FFF:file#, 对应 v$datafile.file#
BBBBBB:block#
RRR:row#
Dbms_rowid 包
SELECT dbms_rowid.rowid_block_number('AAAGFqAABAAAIWEAAA') from dual;
具体到特定的物理文件
二、 索引的概念
1、 类似书的目录结构
2、 Oracle 的“索引”对象,与表关联的可选对象,提高 SQL 查询语句的速度
3、 索引直接指向包含所查询值的行的位置,减少磁盘 I/O
4、 与所索引的表是相互独立的物理结构
5、 Oracle 自动使用并维护索引,插入、删除、更新表后,自动更新索引
6、 语法:CREATE INDEX index ON table (column[, column]...);
7、 B-tree 结构(非 bitmap):
[一]了解索引的工作原理:
表:emp
EMPNO NAME DEPT SAL ETC…
70 Bob 10 450 ….
10 Frank 10 550 ….
30 Ed 30 723 ….
20 Adam 20 556 ….
40 David 10 225 ….