[ORACLE索引介绍与高性能SQL优化.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索引介绍与高性能SQL优化

ORACLE索引介绍与高性能SQL优化2007-9-19来源:不详作者:佚名点击: 481次窗体顶端窗体底端什么是索引    索引是建立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据;    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来减少重做日志;  。节省重做日志文件的空间;  。缩短创建索引的时间;  。改善了并行创建大索引时的性能。  怎样建立最佳索引    明确地创建索引  create?index?index_name?on?table_name(field_name)  tablespace?tablespace_name  pctfree?5  initrans?2  maxtrans?255  storage  (  minextents?1  maxextents?16382  pctincrease?0  );    创建基于函数的索引    。常用与UPPER、LOWER、TO_CHAR(date)等函数分类上,例:  create?index?idx_func?on?emp?(UPPER(ename))?tablespace?tablespace_name;    创建位图索引    。对基数较小,且基数相对稳定的列建立索引时,首先应该考虑位图索引,例:  create?bitmap?index?idx_bitm?on?class?(classno)?tablespace?tablespace_name;    明确地创建唯一索引    。可以用create?unique?index语句来创建唯一索引,例:  create?unique?index?dept_unique_idx?on?dept(dept_no)?tablespace?idx_1;    创建与约束相关的索引    。可以用using?index字句,为与unique和primary?key约束相关的索引,例如:  alter?table?table_name  add?constraint?PK_p

文档评论(0)

xiayutian80 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档