MySQL-explain执行计划笔记

1、Explain含义

  •  Explain是sql分析工具中非常重要的一部分,它可以模拟优化器执行查询语言,帮助我们理解查询是如何执行的;分析查询计划可以帮助我们发现瓶颈,优化查询性能。

 2、Explain作用

  • 表的读取顺序

  • sql执行时查询操作类型

  • 可以使用哪些索引

  • 实际使用哪些索引

  • 每张表有多少行记录被扫描

  • sql语句性能分析

  3、Explain用法
      数据准备:

DROP TABLE IF EXISTS orders;
DROP TABLE IF EXISTS users;
DROP TABLE IF EXISTS products;

CREATE TABLE users(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) DEFAULT NULL,
email VARCHAR(100) NOT NULL,
password VARCHAR(100) NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE products(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
price FLOAT NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE orders(
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
order_date DATETIME NOT NULL,
total_price FLOAT NOT NULL,
product_id INT NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (product_id) REFERENCES products(id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

alter table users add index index_name_email(name, email);

INSERT INTO users(name, email, password) 
 VALUES('张三', 'zhangsan@example.com', 'password123'),
 ('李四', 'lisi@example.com', 'password123'),
 ('王五', 'wangwu@example.com', 'password123'),
 ('赵六', 'zhaoliu@example.com', 'password123'),
 ('钱七', 'qianqi@example.com', 'password123');

INSERT INTO products(name, price) 
 VALUES('产品1', 10.00),
 ('产品2', 15.00),
 ('产品3', 20.00),
 ('产品4', 12.00),
 ('产品5', 18.00);

INSERT INTO orders(user_id, order_date, total_price, product_id) 
 VALUES(1, '2024-05-01 10:00:00', 100.00, 1),
 (2, '2024-05-01 11:00:00', 50.00, 2),
 (3, '2024-05-01 12:00:00', 20.00, 3),
 (4, '2024-05-01 13:00:00', 15.00, 4),
 (5, '2024-05-01 14:00:00', 25.00, 5);
    MySQL5.7版本之前,使用Explain Extended在Explain的基础上额外多返回filtered列和extra列
       例如:
            Explain Extended select * from users;
    MySQL5.7版本之前,使用Explain Partitions在Explain的基础上额外多返回partitions列
       例如:
            Explain Partitions select * from users;
    MySQL5.7版本引入了这两个特性,直接使用Explain关键字可以将partitions列、 filtered列、extra列直接查询出来
       例如:
            Explain select * from users;
    Explain语句返回列的含义:
  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值