由于我在最近的项目中对mysql的某张表的varchar列加上前缀索引后,在查询语句中即使where子句里只有course_num like "4%"
这个条件,通过使用explain发现还是会走all类型进行全表查询。随后,我发现用绝大多数的博文中的数据进行复盘测试时,得到的结果和他们的对不上,在翻阅MySQL的优化器相关知识时,绝大多数博文中写的形如"4%"
这种百分号在后面的一定会走range类型用前缀索引进行查询,这不是绝对正确的,在一些情况下不会走前缀索引查询,可能这些博文默认读者已经知晓了优化器的某些前置知识。然而实际上需要结合优化器基于成本计算去选择是否使用索引。好了,废话不多说,看下面的测试用例的演示。