Skip to content

成本优化

成本的定义

  • 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

子查询优化