INDEX调优-深入理解ORACLE索引调优.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
INDEX调优-深入理解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): 本篇文章来源于《点睛考试网》[] ;原文链接地址:/Oracle/zx/hy/489337.html 正文: 什么是索引      索引是建立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据;      Oracle存储索引的数据结构是B*树,位图索引也是如此,只不过是叶子节点不同B*数索引;      索引由根节点、分支节点和叶子节点组成,上级索引块包含下级索引块的索引数据,叶节点包含索引数据和确定行实际位置的rowid。      使用索引的目的   加快查询速度   减少I/O操作   消除磁盘排序      何时使用索引   查询返回的记录数   排序表40%   非排序表 7%   表的碎片较多(频繁增加、删除)      索引的种类   非唯一索引(最常用)   唯一索引   位图索引   局部有前缀分区索引   局部无前缀分区索引   全局有前缀分区索引   散列分区索引   基于函数的索引      管理索引的准则      在表中插入数据后创建索引      。在用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重建索引,则不必删除索引。      索引数据块空间使用      。创建索引时指定表空间,特别是在建立主键时,应明确指定表空间;   。合理设定pctfress,注意:不能给索引指定pctused;   。估计索引的大小和合理地设置存储参数,默认为表空间大小,或initial与next设置成一样大。      考虑并行创建索引      。对大表可以采用并行创建索引,在并行创建索引时,存储参数被每个查询服务器进程分别使用,例如:initial为1M,并行度为8,则创建索引期间至少要消耗8M空间;      考虑用nologging创建索引      。对大表创建索引可以使用nologging来减少重做日志;   。节省重做日志文件的空间;   。缩短创建索引的时间;

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档