查询:
重新定义关联表的顺序:
*数据表的关联并不总是按照在查询中指定的顺序进行,觉醒关联的顺序是优化器
将外连接转化内连接:
*并不是所有的OUTER JOIN 语句都必须以外连接方式执行,ex:where条件、库表结构都可能会让外连接等价于一个内连接,mysql能够识别并且重写查询、从而重新调整关联顺序
使用等价变换规则:
*mysql可以使用一些等价变换来简化并且规范表达式。ex:(a<b and b=c) and a=5 => (b>5 and b=c and a=5).
优化 COUNT()、MIN()、MAX()
*索引和列是否未空通常可以帮助mysql优化。ex:1:查询某一列的最小值,只需要查询对应 B-TREE索引最左前端的记录。2:没有任何 WHERE条件的COUNT(*) 查询可以使存储引擎提供一些优化
子查询优化:
*某些情况下,可以将子查询转换一种效率更高的形式,从而减少多个查询之间多次对数据进行访问
提前终止查询:
*在特定的情况下,满足所需查询数据了,可以在WHERE条件里面 加上 一些 DISTINCT、NOT EXIST(),或者 LEFT JOIN 类型的查询
列表IN()的比较:
*IN(),完全等同于多个 OR 条件的字句、因为两者是完全等价的。但MYSQL里面则是 先将IN()列表中的数据先进行排序,然后通过二分查找的方式确定列表中的值是否满足条件