一.mysql5.7.26,字段有id,col1,col2,col3,col4,col5。id主键索引,对列col1、列col2和列col3建一个联合索引test_col1_col2_col3 (联合索引 test_col1_col2_col3 实际建立了(col1)、(col1,col2)、(col,col2,col3)三个索引),100条数据做测试,数据格式如下:where条件如下,
where条件如下:
1.col2=‘安徽’ (不走索引)
注:建立联合索引时会遵循最左前缀匹配的原则,组合索引的第一个字段必须出现在查询组句中,这个索引才会被用到
2.col3=‘赵英明’ and id=2 或id=2 and col3=‘赵英明’ (id走索引)
3.col1=‘057128256072’ and col2=‘浙江’ and col3 like ‘%俞磊’ (col1,col2走索引)
注:优化查询条件一批匹配索引的位置,直到遇到范围查询(>、<、between、like)就停止匹配
4.col2=‘浙江’ and col1=‘057128256072’ 或col1=‘057128256072’ and col2=‘浙江’ (都走索引)
注:索引的字段可以是任意顺序的,会对联合合索引的最左边的,也就是第一个字段col1的数据进行排序,在第一个字段的排序基础上,然后再对后面第二个字段col2进行排序。其实就相当于实现了类似 order by col1 col2这样一种排序规则。
5.col1=‘055165217615’ and col5=0 and col2=‘安徽’ (col1,col2用索引)
mysql组合索引的最左原则实例分析
最新推荐文章于 2024-08-06 16:36:52 发布