第 69.1 节:不要隐藏列在函数中
一个常见错误是将索引列隐藏在函数调用内部。例如,以下查询无法从索引中受益:
WHEREDATE(dt)='2000-01-01'相反,给定INDEX(dt),以下查询可能使用索引:
WHEREdt='2000-01-01'-- 如果 'dt' 是 DATE 类型以下方式适用于DATE、DATETIME、TIMESTAMP,甚至DATETIME(6)(微秒):
WHEREdt>='2000-01-01'ANDdt<'2000-01-01'+INTERVAL1DAY第 69.2 节:OR
一般来说,OR会破坏优化。
WHEREa=12ORb=78不能使用INDEX(a,b),并且可能使用或不使用INDEX(a)和INDEX(b)通过“索引合并”。“索引合并”比什么都没有好,但也仅此而已。
WHEREx=3ORx=5可以转换为: