Oracle索引分析和总结.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Oracle 索引 Oracle 索引 什么是索引 索引是建立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据。具体来说: 索引类似书的目录结构 Oracle 的“索引”对象,与表关联的可选对象,提高 SQL 查询语句的速度 索引直接指向包含所查询值的行的位置,减少磁盘I/O 与所索引的表是相互独立的物理结构 Oracle 自动使用并维护索引,插入、删除、更新表后,自动更新索引 语法:CREATE INDEX index ON table (column[, column]...); Oracle 存储索引的数据结构是 B-树,位图索引也是如此,只不过是叶子节点不同 B-数索引;索引由根节点、分支节点和叶子节点组成,上级索引块包含下级索引块的索引数据,叶节点包含索引数据和确定行实际位置的 rowid。 什么是 ROWID ROWID 存储了 row 在数据文件中的具体位置:64位编码的数据,A-Z, a-z, 0-9, +,和/; row 在数据块中的存储方式:比 如,ROwID=OOOOOOFFFBBBBBBRRR,含义是: OOOOOO:data object number,对应 dba_objects.data_object_id; FFF:file#,对应 v$datafile.file#; BBBBBB:block#; RRR:row#; 何时使用索引 查询返回的记录数 3.2 排序表40% 非排序表7% 表的碎片较多(频繁增加、删除) 使用索引的目的 加快查询速度 减少 I/O 操作 消除磁盘排序 了解索引的工作原理 表:emp 目标:查询 Frank 的工资salary 建立索引:create index emp_name_idx on emp(name); 索引的分类 唯一索引 何时创建:当某列任意两行的值都不相同 当建立 Primary Key(主键)或者 Unique constraint(唯一约束)时,唯一索引将被自动建立 语法:CREATE UNIQUE INDEX index ON table (column); 组合索引 何时创建:当两个或多个列经常一起出现在 where 条件中时,则在这些列上同时创建组合索引 组合索引中列的顺序是任意的,也无需相邻。但是建议将最频繁访问的列放在列表的最前面 演示(组合列,单独列) 位图索引 何时创建:列中有非常多的重复的值时候。例如某列保存了 “性别” 信息。 Where 条件中包含了很多 OR 操作符。较少的 update 操作,因为要相应的跟新所有的 bitmap 结构:位图索引使用位图作为键值,对于表中的每一数据行位图包含了 TRUE(1)、FALSE(0)、或 NULL 值。 优点:位图以一种压缩格式存放,因此占用的磁盘空间比标准索引要小得多 语法:CREATE BITMAP INDEX index ON table (column[, column]...) create table bitmaptable as select * from indextable where owner in(SYS,PUBLIC); 基于函数的索引 何时创建:在 WHERE 条件语句中包含函数或者表达式时 函数包括:算数表达式、PL/SQL 函数、程序包函数、SQL 函数、用户自定义函数。 语法:CREATE INDEX index ON table (FUNCTION(column)); 管理索引的准则 在表中插入数据后创建索引。在用 SQL*Loader 或 import 工具插入或装载数据后,建立索引比较有效; 索引正确的表和列 经常检索排序大表中40%或非排序表7%的行,建议建索引; 为了改善多表关联,索引列用于联结; 列中的值相对比较唯一; 取值范围(大:B*树索引,小:位图索引); Date 型列一般适合基于函数的索引; 列中有许多空值,不适合建立索引 为性能而安排索引列 经常一起使用多个字段检索记录,组合索引比单索引更有效;把最常用的列放在最前面,例:dx_groupid_serv_id(groupid,serv_id),在 where 条件中使用 groupid 或 groupid,serv_id,查询将使用索引,若仅用到 serv_id 字段, 则索引无效;合并/拆分不必要的索引。 限制每个表索引的数量 一个表可以有几百个索引(你会这样做吗?),但是对于频繁插入和更新表,索引越多系统 CPU,I/O 负担就越重;建议每张表不超过5个索引。 删除不再需要的索引 索引无效,集中表现在该使用基于函数的索引或位图索引,而使用了 B*树索引; 应用中的查询不使用索引; 重建索引之前必须先删除索引,若用 alter index … rebuild 重建索

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

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

认证主体 武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档