优点
- 加快检索速度
- 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
- 加速表和表之间的连接,实现数据的参考完整性。
- 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
缺点
- 创建索引和维护索引要耗费时间,时间随着数据量的增加而增加。
- 除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,需要的空间就会更大。
- 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
注意事项
- 要建立在经常进行select操作的字段上。这是因为,如果这些列很少用到,那么有无索引并不能明显改变查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。
- 要建立在值比较唯一的字段上。这样做才是发挥索引的最大效果。比如主键的id字段,唯一的名字name字段等等。如果索引建立在唯一值比较少的字段,比如性别gender字段,寥寥无几的类别字段等,刚索引几乎没有任何意义。
- 对于那些定义为text、image和bit数据类型的列不应该增加索引。因为这些列的数据量要么相当大,要么取值很少。
- 当修改性能远远大于检索性能时,不应该创建索引。修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索引。
- 在WHERE和JOIN中出现的列需要建立索引。