预定义一个索引 key(col1,col2,col3)
一:适用范围
1、全值匹配
指和索引中的所有列进行匹配。即查询条件中完全使用索引中的键,并且都为等于条件
2、匹配最左前缀
指条件中使用的列最左匹配索引中的列,并且都为等于条件。
3、匹配列前缀
指只匹配某一列的开头部分,如col1='aaa%' ,但是必须满足上面提到的匹配最左前缀。
4、精确匹配某一列并范围匹配另外一列
如 col1='aaa' and col2 like 'k%'。但是必须满足上面提到的匹配最左前缀。
二:使用限制
1、如果不是按照索引的最左列开始查找,则无法使用索引。
如 直接用col2='axx',则无法使用上面的所有
2、不能跳过索引中的列。
如 col1='xxx' and col3='444' 这样的查询只会使用索引中的col1列,不会使用col3列,因为跳过了col2列。
3、如果查询中有某个列的范围查询,则右边的所有列都无法使用索引优化查询。
如 col1='aaa' and col2 like 'k%' and col3='fdfd'。这个查询只能用索引的前俩列。