今天优化sql的时候发现一个有趣的问题,like只在部分情况下走索引的,除了%放前面不走索引这种情况外,查询的结果列不是索引列或者主键id时,也会不走索引。
查询结果列包含除主键id,like索引列,常数之外的列(upload_time也有索引),就不走索引
查询结果列只包含主键id,like索引列,常数(包含任一也行),就走索引
还有一个有意思的,就是mysql的不区分大小写不仅体现在关键字上面,其值也是一样的,请看下图
============================================================= 范围查询其实也差不多,查询列包含除主键id,索引列,常数之外的列时,就不走索引
查询列仅包含主键id,索引列,常数时(包含任一也可以),走索引