您的位置:首页 > 数据库 > Oracle

Oracle建立索引的原则

2015-01-21 14:31 183 查看
1.数据库建立索引的原则

   铁律一:天下没有免费的午餐,使用索引是需要付出代价的。

   铁律二:对于查询中很少涉及的列或者重复值比较多的列,不要建立索引。

 
 铁律三:对于按范围查询的列,最好建立索引。

 
 铁律四:表中若有主键或者外键,一定要为其建立索引。

 
 铁律五:对于一些特殊的数据类型,不要建立索引。

 
 铁律六:索引可以跟Where语句的集合融为一体。

建立索引常用规则:

1、表的主键、外键必须有索引;

2、数据量超过300的表应该有索引;

3、经常与其他表进行连接的表,在连接字段上应该建立索引;

4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;

5、索引应该建在选择性高的字段上;

6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:

   A、正确选择复合索引中的主列字段,一般是选择性较好的字段;

   B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?

      如果是,则可以建立复合索引;否则考虑单字段索引;

   C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;

   D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;

   E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;

   F、复合索引中只要有一列含有NULL值,那么这一列对于此复合索引是无效的

     G.索引,不仅仅是主键和唯一键,也可以是其他的任何列。在使用like其中一个有索引的字段列的时候。

           如: select *from A name like ‘xxx%’;

   这个sql会使用name的索引(前提name建立了索引);而下面的语句就使用不了索引

   Select * from A name like ‘%xxx’;

   因为‘%’代表任何字符,%xxx不知道怎么去索引的,所以使用不了索引。
     H.  如果我们创建了(area,age,salary)的复合索引,那么其实相当于创建了(area,age,salary),(area,age),(area)三个索引,这样称为最佳左前             缀特性。因此我们在创建复合索引的应该将最常用作限制条件的列放在最左边,依次递减。

8、频繁进行数据操作的表,不要建立太多的索引;

9、删除无用的索引,避免对执行计划造成负面影响
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: