mysql 查询优化执行过程
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)
单路排序
双路排序
相关文章
- Mysql net start mysql启动,提示发生系统错误 5 拒绝訪问 解决之道
- mysql 设置 row格式binlog_为什么要把MySQL的binlog格式修改为row
- 【MySQL高级】Mysql的体系结构概览及存储引擎以及索引的使用
- Mysql Window 解压版卸载
- 《MySQL DBA修炼之道》——1.3 查询执行过程概述
- 不停止 MySQL 服务增加从库的两种方式
- 连接Mysql提示Can’t connect to local MySQL server through socket的解决方法
- MySQL root修改普通用户密码及Mysql 修改root密码
- MySQL的S语法的执行顺序
- 【Json】在线JSON转MySQL建表语句工具
- 【mysql】执行use databases很慢或者卡了
- Mysql current_time,current_date()与now()区别
- 在mysql命令行下执行sql文件
- MySQL 中隔离级别 RC 与 RR 的区别
- 《MySQL排错指南》——1.5 追踪数据中的错误
- MySQL使用索引的场景分析、不能使用索引的场景分析
- idea 社区版连接mysql数据库教程,Cannot connect to “MySQL-5.1.43“. CLIENT_PLUGIN_AUTH is required
- Mysql_mysql force Index 强制索引
- MySQL执行语句性能优化
- Mysql学习---视图/触发器/存储过程/函数/执行计划/sql优化 180101
- (5.7)mysql高可用系列——MySQL中的GTID复制(理论篇)【转】
- (1.6)MySQL执行计划
- Navicat MySQL 自动备份
- MySQL计划任务(事件调度器)(Event Scheduler) 创建时 会执行一次
- Mysql启动时提示:Another MySQL daemon already running with the same unix socket.