概述MySQL优化器
原理和实践
周振兴/@淘宝 For 2013华东数据库技术大会
关于作者
关于作者:周振兴/ ***@orczhou /
来自阿里巴巴核心系统数据库开发团队
四年MySQL数据运维管理和性能调优经验
<高性能MySQL>第三版译者
目录
●原理概述
● Explain Explain
●更高效的SQL
●关于子查询
原理概述
●优化器做什么
● MySQL优化器的主要工作
● MySQL案例--优化器如何工作
术语和名词
Relational RDBMS 通常称作
Tuple Row 记录/行
Attribute Column 列/字段
Restrict Predicate WHERE条件/限制/谓词
... ... ...
Row-id/Rowid 记录的唯一引用/Row-id
ROR(Rowid-ordered Retrieval) ROR/参考
一、原理概述
什么是优化器?
SQL Parse Tree 统计信息
Rule && Cost
优化器
Table/Index statistics
Query Execute Plan 顺序/访问方式
(QEP)
interface:read_first/read_next
一、原理概述
Code show
new JOIN(Lex); 顺序和访问方式
JOIN::prepare();
JOIN::optimize();
JOIN::exec();
if subquery in MySQL new JOIN(Lex);
JOIN::prepare();
JOIN::optimize();
JOIN::exec();
一、原理概述
优化器的工作
Parse select
Query Rewrite
Const table detection
Range analysis
join optimization
plan refinement
execute plan
From: -2009-Understanding and Control of MySQL Query Optimizer
一、原理概述
优化器的工作-Rewrite
Parse select
Outer -> Inner JOIN SELECT * FROM
Query Rewrite A LEFT JOIN B
WHERE = 5
Const table detection ...(null-rejected )
Range analysis
Rewrite subquery
join optimization IN -> Exists
(push down)
plan refinement
execute plan
一、原理概述
优化器的工作-const table
Parse select
Query Rewrite
Const table detection Unique Key ref WHERE pk=const
Range analysis
join optimization 为什么要探测常数表?
优化器总是将常数表直接放
在顺序的最前面,大大
plan refinement JOIN
减少后面的“搜索空间”
execute plan
MySQL优化器概述-周振兴 来自淘豆网m.daumloan.com转载请标明出处.