MySQL索引对数据检索的性能至关重要,盲目的增加索引不仅不能带来性能的提升,反而会消耗更多的额外资源,本篇总结了一些MySQL索引实战经验。
索引是用于快速查找记录的一种数据结构。索引就像是数据库中数据的目录,数据库在查询时,首先在索引中找到匹配的值,然后根据这个匹配值找到对应的数据行。
概念解释
聚簇索引
聚簇索引的顺序就是数据的物理存储顺序,索引中数据域存储的就是实际的数据,一个表最多只能有一个聚簇索引,适用于查询多行数据,不适用于频繁修改的列,一般在主键上创建。
非聚簇索引
索引顺序与数据物理排列顺序无关,索引中存储的内容为实际数据的地址,适应于查询单行数据。
普通索引
即平时创建的普通索引。
唯一索引
索引所在的列或列组合的值是全表唯一的。
全文索引
MySQL从3.23.23版开始支持全文索引,它查找的是文中的关键词,而不是直接比较索引中的值。
单列索引
在单列上创建的索引。
组合索引
在多个列上创建的索引。
最左前缀查找
where子句中有a、b、c三个查询条件,创建一个组合索引abc(a,b,c),最左前缀的概念是说以组合索引最左边的列a组合成的查询条件,如(a,b,c)、(a,b)、(a,c),这三种情况的查询条件都会使用abc索引,和where子句中a、b、c出现的顺序没关系,可以是where c=? and b=? and a=?,但(b,c)组合不会使用索引,即where c=? and b=?。
哪些列适合创建索引
哪些列不适合创建索引
经验总结
关于索引的实战经验总结后续还会不断更新。