关于Oracle中索引的使用

Posted 工设091

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Oracle中索引的使用相关的知识,希望对你有一定的参考价值。

    索引的 统计和使用是数据库自动完成的,不需要手动植入代码 ,

开发者只需要确认对哪些字段或者字段组合是否创建索引就可以了。

 

   字段被创建的索引不一定就非得起效,和sql语句使用的条件有关系,

比如 LIKE 关键 对索引就是无效的。

 

  创建索引的语法为:CREATE INDEX idx_表名_字段名 ON 表名(字段名或字段组合);

如果经常 使用ORDER BY子句,进行多字段排序,使用这种复合索引比较有效。

 

  对了 ,索引的使用一般在WERER条件中使用,也可以使用在DISTINCT去重,还可以

创建基于函数的所用,比如SELECT * FROM xxx WHERE UPPER(xxx) = ‘XXX‘;

如果 对UPPER函数创建索引:

CREATE INDEX idx_表名_字段名 ON 表名(UPPER(xxx));

在查询时也能提提高效率。

 

  索引需要定期重建,主要应对数据表的更新,使得索引更精确,保证查询效率。

所以这就说明添加索引尽量对DML操作少的表字段进行比较好。

重建索引的 语法为:

ALTER INDEX  idx_表名_字段名  REBULID;

如果一张表里面的索引创建不合理,包括索引没有经常更新,不仅不会提升查询效率,

反而还会降低查询效率。可以考虑删除索引:

删除索引语法:

DROP INDEX  idx_表名_字段名  ;

 

那么创建索引的原则是什么呢:

1.一般不再数据量小的表中创建索引。一万条以下可以不用考虑了。

2.在经常出现在WHERE条件中的字段添加所以。不如多表的 连接条件可以考虑添加索引。

3.不建议经常在DML表中添加索引。

4.考虑在经常出现在ORDER BY ,DISTINCT等后的字符添加索引。若是复合索引,

    需要保证添加索引的字符顺序与使用时字段的顺序一致。

5.索引并不是越多越好,一张表的索引需要个数不易太多。需要删除不常使用的索引。

 

以上条件需要实际测试。根据自身环境确定一个比较好的索引原则。

 

 

 

 

 

以上是关于关于Oracle中索引的使用的主要内容,如果未能解决你的问题,请参考以下文章

关于Oracle表碎片整理

如何在sql语句中显示Oracle索引

ORACLE关于索引是否需要定期重建争论的整理

关于SQLServer 2000 索引问题

转 关于oracle 分区表 表空间以及索引的总结

关于ORACLE索引的几种扫描方式