1.哪些情况下适合创建索引?
1.1字段的数值有唯一性的限制
索引本身可以起到约束的作用,比如唯一索引,主键索引都可以起到唯一性约束。因此,在我们的数据表中,如果某个字段是唯一的,就可以直接创建唯一索引或者主键索引,这样就可以更快速地通过索引来确定某条记录。
1.2频繁作为WHERE查询条件的字段
某个字段在SELECT语句的WHERE条件中经常被使用到,那么就需要给这个字段创建索引。尤其是在大数据量的情况下,创建普通索引就可以大幅提升数据查询的效率。
1.3经常GROUP BY 和 ORDER BY的列
索引就是让数据按照某种顺序进行存储或检索,因此当我们使用GROUP BY对数据进行分组查询,或者使用ORDER BY对数据进行排序的时候,就需要对分组或者排序的字段进行索引。如果待排序的列有多个,那么可以在这些列上建立组合索引。
1.4UPDATE 、DELETE的WHERE条件列
对数据按照某个条件进行查询后再进行UPDATE或DELETE的操作,如果对WHERE字段创建了索引可以大幅提升效率。原理是因为我们需要先根据WHERE条件列出检索出来这条记录,然后再对它进行更新或删除。如果进行更新的时候,更新的字段是非索引字段,则提升的效率会更明显,这是因为非索引字段更新不需要对索引进行维护。
1.5DISTINCT字段需要创建索引
有时候我们需要对某个字段进行去重,使用DISTINCT,那么对这个字段创建索引也会提升查询效率。
1.6多表JOIN连接操作时,创建索引注意事项
(1)连接表的数量尽量不要超过3张,因为没增加一张表就相当于增加了一张嵌套的表,数量级增长会非常快,严重影响效率的查询;
(2)对WHERE条件创建索引,因为WHERE是对数据进行过滤的,如果数据量非常大的情况下没有WHERE条件过滤是非常可怕的;
(3)对用于连接的字段创建索引,并且该字段在多张表中的类型必须一致。
1.7使用列的类型小的创建索引
类型小指的是该类型表示的数据范围小,那么再进行查询时进行的比较操作越快。
