Oracle 索引技术之概念

来源:Oracle认证    发布时间:2012-11-12    Oracle认证视频    评论

什么是索引
   
   索引是建立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据;
   
   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来减少重做日志;
   
   .节省重做日志文件的空间;
   
   .缩短创建索引的时间;
   
   .改善了并行创建大索引时的性能。

上一篇: Oracle 10g RAC下如何删除listener
下一篇: 在Solaris10下安装oracle

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答