使用oracle索引的一些小技巧

索引对数据库访问的性能的作用十分巨大,设计合理的索引对于系统性能调整至关重要。而使用索引又是数据库开发过程中最困难的一点。在设计索引的时候要注意以下几个方面:

 

  • 在OLTP系统中,尽量避免全表扫描,尽量使绝大多数操作都通过索引访问
  • 数据量很大并且经常变动的表上的索引不易过多,过量的索引会导致插入、更新和删除操作变慢,产生大量的IO,如果一张表上的索引超过8个,就需要检查是否这些索引都是必要的。(但是要值得注意的是这条原则很可能被过度的夸大。因为绝大多数OLTP系统,写操作不足10%,绝大多数的操作是读。因此如果是设计的合理,并不能说一张表上的索引超过多少就是不合理的)
  • 如果索引数量过多,建议删除部分所有的列都建有独立索引的复合索引,复合查询操作可以通过使用两个独立列的索引结果集合并来获取,也可以保障查询效率
  • 小表不要建立索引,可能通过索引访问速度更慢,把小表放入KEEP 池效率更高
  • 索引的PCTFREE、INITTRANS、MAXTRANS参数设置十分重要,特别是对于变化十分大的索引
  • 对于比较大的索引,使用索引分区会改善效率
  • 位图索引对于列表类值的效果较好(索引大小也比较小),但是位图索引不适合变化十分频繁的表
  • 使用函数索引可以避免大量不必要的全表扫描
  • 如果索引包含了查询需要的所有信息,查询就不需要访问表的数据,可以大大提高访问效率,因此要注意建立合理的复合索引,并注意SQL语句的合理性
  • 用好索引组织表
  • 可以使用反转索键值索引来消除索引相关的热块
  • 随着数据的变化,索引的效率会下降,因此定期重建索引对于性能提升有很大帮助
  • 使用CBO优化器的情况下,保证表和索引的数据得到了良好的分析是保证优化器选择最佳执行计划的关键
  • 删除所有不必要的索引。ORACLE 9i提供的新特性可以使DBA能够跟踪索引的使用情况,用这个功能找到不使用的索引,并把这些索引删除

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wyzxg/archive/2008/08/27/2835619.aspx

你可能感兴趣的:(oracle,sql,数据库,优化,IO)