zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

mysql 查询优化执行过程

mysql执行 优化 查询 过程
2023-09-11 14:13:57 时间


mysql 查询优化执行过程

一。extra:
filesort
using index
using join buffer
distinct


二。type字段:
null>system>const>eq_ref>ref>ref_or_null>index_merge>range>index>all

null:优化阶段分析查询语句,不要查询索引和表
systm:
const:只查一行就可以查询到数据
eq_ref:唯一性索引扫描,主键或唯一键索引扫描,只有一条记录与之匹配
ref:非唯一索引扫描,1对多的混合体
ref_or_null:类似ref,还可以搜素值为Null的情况
index_merge:使用了索引合并的优化方法
range:范围查询
index:全索引扫描,只遍历索引树;full index scan
all:扫描全表full table scan

rows:扫描的行数

select id name from t1 order by id limit 10000000,20; --order by id 主键,不要用重复键
不带排序条件,删除id后,在插入旧id数据,可能造成分页的数据物理顺序和逻辑顺序不一致

四。查询优化器的智能化:
sql接口
查询解析器
查询优化器
执行器:
存储引擎
buffer pool加载数据到缓冲池

show variables like "%buffer_pool%";


磁盘文件
undo
redo

强制索引:force index(idx_create_time)

select id from t2 where id>100000 order by createtime desc limit 0,20

 


五。联表子查询:子查询里条件要有索引
select id from t2 join (selct id from t2 order by createtime desc limit 10000,20) as t using(id)
单路排序
双路排序