详解oracle索引.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
详解oracle索引

一、 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 目标:查询Frank的工资salary 建立索 引:create index emp_name_idx on emp(name); ? [试验]测试索引的作用: 1. 运行/rdbms/admin/utlxplan 脚本 2. 建立测试表 create table t as select * from dba_objects; insert into t select * from t; create table indextable as select rownum id,owner,object_name,subobject_name, object_id,data_object_id,object_type,created from t; 3. set autotrace trace explain 4. set timing on 5. 分析表,可以得到cost 6. 查询 object_name=’DBA_INDEXES’ 7. 在object_name列上建立索引 8. 再查询 [思考]索引的代价: 插入,更新 三、 唯一索引 1、 何时创建:当某列任意两行的值都不相同 2、 当建立Primary Key(主键)或者Unique constraint(唯一约束)时,唯一索引将被自动建立 3、 语法:CREATE UNIQUE INDEX index ON table (column); 4、 演示 四、 组合索引 1、 何时创建:当两个或多个列经常一起出现在where条件中时,则在这些列上同时创建组合索引 2、 组合索引中列的顺序是任意的,也无需相邻。但是建议将最频繁访问的列放在列表的最前面 3、 演示(组合列,单独列) 五、 位图索引 1、 何时创建: 列中有非常多的重复的值时候。例如某列保存了 “性别”信息。 Where 条件中包含了很多OR操作符。 较少的update操作,因为要相应的跟新所有的bitmap 2、 结构:位图索引使用位图作为键值,对于表中的每一数据行位图包含了TRUE(1)、FALSE(0)、或NULL值。 3、 优点:位图以一种压缩格式存放,因此占用的磁盘空间比标准索引要小得多 4、 语法:CREATE BITMAP INDEX index ON table (column[, column]...); 5、 掩饰: create table bitmaptable as select * from indextable where owner in(SYS,PUBLIC); 分析,查找,建立索引,查找 六、 基于函数的索引 ?? 1、 何时创建:在WHERE条件语句中包含函数或者表达式时 2、 函数包括:算数表达式、PL/SQL函数、程序包函数、SQL函数、用户自定义函数。 3、 语法:CREATE INDEX index ON table (FUNCTION(column)); 4、 演示 必须要分析表,并且 query_rewrite_enabled=TRUE 或者使用提示/*+ INDEX(ic_index)*/ 七、 反向键索引 目的:比如索引值是一个自动增长的列: 多个用户对集中在少数块上的索引行进行修改,容易引起资源的争用,比如对数据块的等待。此时建立反向索 引。

文档评论(0)

精华文库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7111022151000002

1亿VIP精品文档

相关文档