最左前缀原则
最先匹配最左边的索引,匹配上就继续,如果匹配不上就检索不到
(a,b,c是索引) where后面的条件有没有给a对应的条件
不给定a等于几,是没法儿查询出结果的,
因为辅助聚簇索引是把索引按照组合索引的顺序存到一起的,如果没有最左边一个,那么将定位不到对应的叶子节点。那么将会走非索引。
(A,B,C) 这样3列,mysql会首先匹配A,然后再B,C.
如果用(B,C)这样的数据来检索的话,就会找不到A使得索引失效。如果使用(A,C)这样的数据来检索的话,就会先找到所有A的值然后匹配C,此时联合索引是失效的。
把最常用的,筛选数据最多的字段放在左侧。
由于最左前缀原则,在创建联合索引时,索引字段的顺序需要考虑字段值去重之后的个数,较多的放前面。ORDER BY子句也遵循此规则。
a,b,c
where a=xx and b>443 and c=32;
where c=32 and b =-123 and a =123;