innoDB B+树的存储结构结构 决定了B-Tree索引支持一下查询类型:
key(last_name,firset_name,job)
1.全值匹配
和索引中的所有列进行匹配:查找姓l 名cc 职业工程师的人
2.匹配最左列
可查找所有姓为l的人,即用索引的第一列
3.匹配列前缀
查找所有以J开头的姓的人。这里也只使用了索引的第一列
4.匹配范围值
查找姓名在Allen和Barrymore之间的人。这里只使用了索引的第一列
5.精确匹配某一列并范围匹配另一列
第一列last_name精确匹配,第二列firt_name范围匹配
6.只访问索引的查询
即查询只需访问索引,而无需访问数据行
因为索引树中的节点是有序的,所以出了按值查找之外,索引还可以用于查询中的order by操作,一般来说如果b—Tree可以按照某种方式查找到值,那么也可以按照这种方式用于排序,所以,如果order by子句满足前面列出的几种查询类型。则这个索引也可以满足对应的排序需求
限制:
1.如果不是按照索引的最左列开始查找,则无法使用索引
2.不能跳过索引中的列
3.如果查询中有某个列的范围查询,则其右边所有列都无法使用索引优化查找