标签为 "order by" 的存档

MySQL怎样优化WHERE子句

此次讨论的为处理WHERE子句而进行的优化。例子中使用了 SELECT 语句,同样也适用于DELETE和UPDATE语句中的WHERE子句。

下面列出了MySQL执行的部分优化:

去除不必要的括号:

((a AND b) AND c OR (((a AND b) AND (c AND d))))
-> (a AND b AND c) OR (a AND b AND c AND d)
常量重叠:

(a<b AND b=c) AND a=5
-> b>5 AND b=c AND a=5
去除常量条件(由于常量重叠需要):

(B>=5 AND B=5) OR (B=6 AND 5=5) OR (B=7 AND 5=6)
-> B=5 OR B=6
索引使用的常数表达式仅计算一次。

Read more…