MySQL索引
将多个字段组合成一个索引,这个索引就是联合索引。联合索引会按照「最左匹配」原则,进行索引匹配。
在联合索引的范围查询中,遇到 >、< 会停止匹配,范围查询的字段可以使用联合索引,但是范围查询字段后面的字段就无法使用了,而对于 >=、<=、BETWEEN、like 前缀匹配的范围查询,并不会停止匹配。
MySQL 5.6 引入了索引下推优化,可以在联合索引遍历过程中,对联合索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表次数。
在建立联合索引时,要把区分度大的字段排在前面,效率更高。MySQL 有查询优化器,如果字段在表的数据行中占比超过界限(30%),会忽略索引,进行全表扫描。
索引的最大好处就是能够提高查询速度,但是创建索引和维护索引不仅耗时,索引还会占用空间,并且因为要动态维护索引而降低增删改的效率。
推荐对唯一字段、用于 WHERE、GROUP BY、ORDER BY 的字段建立索引,不推荐对数据量很小的表、存在大量重复数据的字段以及经常更新的字段建立索引。