- 适合建立索引
- 频繁作为查询的条件的字段(where子句中的列)适合建立索引,可以加快查询的速度
- 表与表连接用于多表联合查询的约束条件的字段适合建立索引
- 查询中排序的字段适合建立索引。因为索引已经排序,这样查询时可以利用索引的排序,加快排序速度
- 查询中用于统计或分组的字段适合建立索引
- 经常需要根据范围进行搜索的列上适合建立索引,因为索引已经排序,其指定的范围是连续的
- 不适合建立索引
- 表数据太少的数据表
- 经常增删改的表不适合建立索引,因为索引是需要动态维护的,增加索引会加大数据表的维护难度
- 对于区分度不高(字段值的唯一性不高)的字段,不适合建立索引,例如性别字段,由于这些列的取值很少,正常只有男、女。在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大,增加索引,并不能明显加快检索速度
- 定义为text、bit数据类型的列不适合建立索引,因为这些列的数据量要么相当大,要么取值很少
- where条件中用不到的字段不适合创建索引
- 频繁更新的字段不适合创建索引,因为每次更新不单单是更新了记录,还会更新索引,加重IO负担
- 在查询中很少使用的列不适合创建索引。因为这些列很少使用到,因此有索引或无索引,并不能提高查询速度,相反。由于增加了索引,反而降低了数据表的维护速度和增大了空间消耗
