了解MySQL的explain命令

一. 预备知识

阅读本文章前需要掌握MySQL索引的底层数据结构相关知识,可以查看我之前的文章深入理解MySQL索引底层数据结构与算法

  • 索引前导列: 所谓前导列,就是联合索引的第一列或者从第一列开始连续多列的组合。比如通过语句CREATE INDEX table1_index ON table1 (x, y, z)创建索引,那么x、xy、xyz都是前导列,而yz,y,z这样的就不是。
  • 覆盖索引: 覆盖索引是select的数据列只用从索引中就能够取得,不必读取数据表,换句话说查询列要被所建的索引覆盖。

二. explain命令的作用

  • 使用explain关键字可以模拟优化器执行SQL语句,知道MySQL是如何处理你的SQL语句的,从而分析你的查询语句的性能瓶颈。
  • select语句前添加explain关键字,MySQL会在查询上设置一个标记,在执行查询时,会返回执行计划信息,而不是返回查询语句的执行结果;如果from子句中包含select语句,该子查询依然会被执行,并且子查询的结果会产生临时表。

三. explain讲解

需要使用的表
  • Actor演员表
DROP TABLE
IF EXISTS `actor`;

CREATE TABLE `actor` (
    `id` INT (11) NOT NULL,
    `name` VARCHAR (45) DEFAULT NULL,
    `update_time` datetime DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;

INSERT INTO `actor` 
    (`id`, `name`, `update_time`)
VALUES
    (1,'a','2017-12-22 15:27:18'),
    (2,'b','2017-12-22 15:27:18'),
    (3,'c','2017-12-22 15:27:18');
  • film影片表
DROP TABLE
IF EXISTS `film`;

CREATE TABLE `film` (
    `id` INT (11) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR (10) DEFAULT NULL,
    PRIMARY KEY (`id`),
    KEY `idx_name` (`name`)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值