1.为经常出现关键字order by、group by、distinct后面的字段,建立索引。

在这些字段上建立索引,可以有效的避免排序操作,如果建立的时复合索引,索引的字段顺序要和这些关键字后面的字段顺序一致,否则索引不会被使用。

2.在union等集合操作的结果集字段上建立索引,可以有效的避免排序操作,如果建立的时复合索引,索引的字段顺序要和这些关键字后面的字段顺序一致,否则索引不会被使用。

3.为经常用作查询选择的字段建立索引

4.在经常用作表连接的属性上建立索引

5.考虑使用索引覆盖,对数据很少被更新的表,如果客户经常至查询其中的几个字段,可以考虑在这几个字段上建立索引,从而将表的扫描改变为索引的扫描。


注意以下限制:

1.限制表上的索引数目。

对一个存在大量更新操作的表,所建索引的数目一般不超过3个,最多不超过5个,索引虽说提高了访问速度,但太多索引会影响数据的更新操作。

2.不要在有大量相同取值的字段上建立索引。

在这样的字段(例如性别)上建立索引,字段作为选择条件时将返回大量满足条件的记录,优化器不会使用该索引作为访问路径。

3.避免在取值朝一个方向上增长的字段(如日期类型的字段)上建立索引,对于复合索引,避免将这些类型的字段放置在最前面。

由于字段取值总是朝一个方向增长,新纪录总是存放在索引的最后一个叶页中,从而不断的引起该叶页的访问竞争、新叶页的分配、中间分支页的拆分。此外,如果所建索引时聚集索引,表中的数据按照索引的排列顺序存放,所有的插入记录都集中在最后一个数据页上进行,从而引起插入热点。

4.对复合索引,按照字段在查询条件中出现的频度建立索引。

5.删除不再使用,或者很少使用的索引