本节内容:
mysql隔离列
如果在查询中没有隔离索引的列,mysql通常不会使用索引。“隔离“列意味着它不是表达式的一部分,也没有位于函数中。
例如:
可以轻易地看出where子句中的id等4,但是mysql却不会帮你求解方程,这取决于自己。
应该养成简化where子句的习惯,这样就会把被索引的列单独放在比较运算符的一边。
再例如:
这个查询会查找date_cool值离今天不超过10天的所有行,但是它不会使用索引,因为使用了TO_DAYS()函数。
稍作修改:
这个查询就可以使用索引,但是它还可以改进。使用CURRENT_DATE将会阻止查询缓存把结果缓存起来,可以用常量替换掉CURRENT_DATE的值: