ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 数据库索引优化

数据库索引优化

原创 Linux操作系统 作者:lzhtjbh 时间:2008-07-30 21:25:31 0 删除 编辑

   今天开始查找一个打印功能响应慢的问题,用jprofiler做了一个简单跟踪,发现有条SQL语句,执行时间相对较长。oracle数据库是刚导进去的,不存在碎片和行迁移、行链接、统计信息没更新的可能,这条SQL语句也不是做的全表扫描,看来可能是索引丢失或使用有问题。检查数据表索引,设了一个组合索引。拿索引和SQL语句一对比,SQL语句where字句中第一个查询列不在索引列的第一列,看来这个索引对这条SQL语句是无效的。为了证明这一点,做了索引监控:

    alter index index_name monitoring usage;

   重新做了一遍打印操作。

   select * from V$object_usage;

   查询结果为空,证明了这一点。正好,借此机会总结一下索引的使用和优化。

  1. 索引的创建是需要代价的,进行删除、更新、插入操作时同步进行索引的删除、更新、插入,会导致删除、更新、插入效率的降低,所以用不到的索引不建。不用的索引及时删除;
  2. 数据列上创建索引时,如果该列没有重复值,创建唯一单一索引,如果该列存在重复值,但和另一个或几个列组合可以确定唯一性,和这几个列一起创建组合索引,查询列中用到的第一查询列做为组合索引的第一个列;
  3. 避免出现包含共享列的重叠索引;
  4. 连接查询中要使用索引,必须使用Nested loop join,这样可以使用内表的索引;
  5. 如果where字句中的查询列存在潜在的类型转换,该列上的索引无效;
  6. 增、删、改频繁的表需要定期对表和索引进行分析,才能保证索引的有效。

              

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15011739/viewspace-414940/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2008-07-29

  • 博文量
    19
  • 访问量
    109122