成本优化
成本的定义
- I/O成本:数据从磁盘加载到内存中,基于InnoDB存储引擎,页是交互的基本单位,成本常数为1.0。
- CPU成本:读取以及检测记录是否满足对应的搜索条件,对结果集进行排序.成本常数为0.2。
单表查询的成本
基于成本的优化步骤
基于索引统计数据的成本计算
多表连接的成本
多表连接的成本计算
依托于单表查询的成本计算
,且多表连接的顺序不同导致不同的成本(n!种顺序,n>1)
。
Mysql基于规则的优化
条件化简
外连接消除
外连查询中的被驱动表的 IS NOT NULL等同于两表内联查询。
sql
SELECT S1.*, S2.* FROM S1 LEFT JOIN S2 ON S1.id = S2.id WHERE S2 IS NOT NULL;
转换为
SELECT S1.*, S2.* FROM S1,S2 WHERE S1.id = S2.id