文章来源: dev.mysql.com/doc/refman/…
Mysql性能优化有三个思路:
- 在数据库级别进行优化
- 在硬件级别进行优化
- 性能和便捷性的平衡 在mysql程序中使用面向性能的SQL扩展
WHERE子句优化
- 删除不必要的括号:
((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
- 索引使用的常量表达式仅计算一次
- 将检查数字类型列与常量值的比较,并折叠或删除无效或超出范围的值
# CREATE TABLE t (c TINYINT UNSIGNED NOT NULL); SELECT * FROM t WHERE c < 256; -≫ SELECT * FROM t WHERE 1;