码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Explain详解与索引最佳实践


    前面一章,我们学习了索引,了解了索引的底层数据结构。

    那接下来,肯定是要来根据mySql的存储,来对sql语句进行优化。

    一谈到优化,我们最常见的就是用Explain来进行Sql分析

    是什么

    Explain可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈。

    在 select 语句之前增加 explain 关键字 ,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL。

    参考官方文档:https://dev.mysql.com/doc/refman/8.0/en/explain-output.html

    废话不多说,直接上实操,先建库表

    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');
    
    
    DROP TABLE IF EXISTS `film`;
    # 主键索引 + name字段索引
    CREATE TABLE `film`
    (
        `id`   int(11) NOT NULL AUTO_INCREMENT,
        `name` varchar(10) DEFAULT NULL,
        PRIMARY KEY (`id`),
        KEY `idx_name` (`name`)
    ) ENGINE = InnoDB
      DEFAULT CHARSET = utf8;
    
    INSERT INTO `film` (`id`, `name`)
    VALUES (3, 'film0'),
           (1, 'film1'),
           (2, 'film2');
    
    
    DROP TABLE IF EXISTS `film_actor`;
    # 主键索引 + film_id, actor_id联合索引
    CREATE TABLE `film_actor`
    (
        `id`       int(11) NOT NULL,
        `film_id`  int(11) NOT NULL,
        `actor_id` int(11) NOT NULL,
        `remark`   varchar(255) DEFAULT NULL,
        PRIMARY KEY (`id`),
        KEY `idx_film_actor_id` (`film_id`, `actor_id`)
    ) ENGINE = InnoDB
      DEFAULT CHARSET = utf8;
    
    INSERT INTO `film_actor` (`id`, `film_id`, `actor_id`)
    VALUES (1, 1, 1),
           (2, 1, 2),
           (3, 2, 1);
    
    

    OK,我们来通过这三个表,来看看Explain的情况

    直接看下面这位兄弟的文章吧。

    https://blog.csdn.net/zza062400/article/details/136320654

  • 相关阅读:
    CentOS 7.9.2009 数据盘挂载
    跨平台应用开发进阶(三十):uni-app 实现视频直播
    Redis群集
    Project Office X for Mac项目管理工具
    学习java的第三十天。。。(网络编程)
    T1030:计算球的体积(信息学一本通C++)
    【ML】第六章 决策树
    大规模神经网络的实现(什么是异步梯度下降?怎样进行模型压缩?)
    修复版知宇发卡企业级发卡平台完整源码/多商户入驻+对接微信公众号+对接免签支付
    docker compose使用教程(docker-compose教程)
  • 原文地址:https://blog.csdn.net/qq_43602877/article/details/139703442
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号