应该建索引的原则

在经常需要搜索的列上建立索引。在主关键字上建立索引。在经常用于连接的列上建索引,即在外键上建立索引。在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。在经常需要排序的列上建立索引 ,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间。在经常成为查询条件的列上建立索引。也就是说,在经常使用在where子句中的列上建立索引。

不应该建索引的原则

对于那些在查询中很少使用和参考的列不应该创建索引。因为既然这些列很少使用,有所因并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。对于那些只有很少值的列不应该建立索引。例如,人事表中的“性别”列,取值范围只有两项:“男”或“女”。若在其上建立索引,则平均起来,每个属性值对应一半的元组,用索引检索,并不能明显加快检索速度。属性值分布严重不均的属性。例如学生的年龄往往集中在几个属性值上,若在年龄属性上建立索引,则在检索某个年龄的学生时,会涉及相当多的学生。过长的属性,例如超过30个字节。因为在过长的属性上建立索引,索引所占的存储空间比较大,而索引的级数也随之增加,有诸多不利之处。如果实在需要在其上建立索引,必须采取索引属性压缩的措施。经常更新的属性或表。因为在更新时有关的索引需要做相应的修改。