最全MySQL8.0实战教程

文章目录

  • 最全MySQL8.0实战教程
  • 22 MySQL的优化
    • 22.4 explain分析执行计划
      • 22.4.1 基本使用

【黑马程序员MySQL知识精讲+mysql实战案例_零基础mysql数据库入门到高级全套教程】

22 MySQL的优化

22.4 explain分析执行计划

22.4.1 基本使用

通过以上步骤查询到效率低的 SQL 语句后,可以通过 EXPLAIN命令获取 MySQL如何执行 SELECT 语句的信息,包括在 SELECT 语句执行过程中表如何连接和连接的顺序。

-- 准备测试数据
create database mydb13_optimize;
use mydb13_optimize; 执行sql脚本sql_optimize.sql添加数据

sql_optimize.sql

/*Navicat Premium Data TransferSource Server         : conn-localhostSource Server Type    : MySQLSource Server Version : 80025Source Host           : localhost:3306Source Schema         : mydb13_optimizeTarget Server Type    : MySQLTarget Server Version : 80025File Encoding         : 65001Date: 03/11/2021 14:10:53
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for privilege
-- ----------------------------
DROP TABLE IF EXISTS `privilege`;
CREATE TABLE `privilege`  (`pid` int NOT NULL AUTO_INCREMENT,`pname` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`pid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of privilege
-- ----------------------------
INSERT INTO `privilege` VALUES (1, '玩跑车');
INSERT INTO `privilege` VALUES (2, '挖煤');
INSERT INTO `privilege` VALUES (3, '敲代码');-- ----------------------------
-- Table structure for role
-- ----------------------------
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role`  (`rid` int NOT NULL AUTO_INCREMENT,`rname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`rid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of role
-- ----------------------------
INSERT INTO `role` VALUES (1, '女神');
INSERT INTO `role` VALUES (2, '屌丝');
INSERT INTO `role` VALUES (3, '老板');-- ----------------------------
-- Table structure for role_privilege
-- ----------------------------
DROP TABLE IF EXISTS `role_privilege`;
CREATE TABLE `role_privilege`  (`rid` int NULL DEFAULT NULL,`pid` int NULL DEFAULT NULL,INDEX `rid`(`rid`) USING BTREE,INDEX `pid`(`pid`) USING BTREE,CONSTRAINT `role_privilege_ibfk_1` FOREIGN KEY (`rid`) REFERENCES `role` (`rid`) ON DELETE RESTRICT ON UPDATE RESTRICT,CONSTRAINT `role_privilege_ibfk_2` FOREIGN KEY (`pid`) REFERENCES `privilege` (`pid`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of role_privilege
-- ----------------------------
INSERT INTO `role_privilege` VALUES (1, 1);
INSERT INTO `role_privilege` VALUES (1, 3);
INSERT INTO `role_privilege` VALUES (2, 2);-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (`uid` int NOT NULL AUTO_INCREMENT,`uname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`uid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '小巧');
INSERT INTO `user` VALUES (2, '张飞');
INSERT INTO `user` VALUES (3, '貂蝉');-- ----------------------------
-- Table structure for user_role
-- ----------------------------
DROP TABLE IF EXISTS `user_role`;
CREATE TABLE `user_role`  (`uid` int NULL DEFAULT NULL,`rid` int NULL DEFAULT NULL,INDEX `uid`(`uid`) USING BTREE,INDEX `rid`(`rid`) USING BTREE,CONSTRAINT `user_role_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON DELETE RESTRICT ON UPDATE RESTRICT,CONSTRAINT `user_role_ibfk_2` FOREIGN KEY (`rid`) REFERENCES `role` (`rid`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of user_role
-- ----------------------------
INSERT INTO `user_role` VALUES (1, 1);
INSERT INTO `user_role` VALUES (1, 2);
INSERT INTO `user_role` VALUES (2, 2);
INSERT INTO `user_role` VALUES (3, 3);SET FOREIGN_KEY_CHECKS = 1;

表间关系

explain select * from user where uid = 1;

explain select * from user where uname = '张飞';

最全MySQL8.0实战教程 22 MySQL的优化 22.4 explain分析执行计划 22.4.1 基本使用相关推荐

  1. 最全MySQL8.0实战教程 14 MySQL的存储过程 14.2 入门案例

    最全MySQL8.0实战教程 文章目录 最全MySQL8.0实战教程 14 MySQL的存储过程 14.2 入门案例 14.2.1 格式 14.2.2 操作 - 数据准备 14.2.3 操作 - 创建 ...

  2. 最全MySQL8.0实战教程 14 MySQL的存储过程 14.1 概述

    最全MySQL8.0实战教程 文章目录 最全MySQL8.0实战教程 14 MySQL的存储过程 14.1 概述 14.1.1 什么是存储过程 14.1.2 特性 [黑马程序员MySQL知识精讲+my ...

  3. 最全MySQL8.0实战教程 2 SQL语言基础

    最全MySQL8.0实战教程 文章目录 最全MySQL8.0实战教程 2 SQL语言基础 2.1 SQL的概述 2.2 SQL的特点 2.3 SQL语言的组成 2.4 语法特点 [黑马程序员MySQL ...

  4. 最全MySQL8.0实战教程

    文章目录 最全MySQL8.0实战教程 一.前言 1.计算机语言概述 2.SQL的概述 2.1 语法特点 2.2 MySQL的安装 2.2.1 方式1:解压配置方式 2.2.2 方式2:步骤安装方式 ...

  5. MySQL优化——Explain分析执行计划详解

    文章目录 前言 一. 查看SQL执行频率 二. 定位低效率执行SQL 三. explain分析执行计划 3.1 id 3.2 select_type 3.3 table 3.4 type 3.5 ke ...

  6. centos7 mysql 源码安装_CentOS7.4 源码安装MySQL8.0的教程详解

    MySQL 8 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 以下为本人2018.4.23日安装过程的记录.整个过程大 ...

  7. Linux7.5 安装mysql8.0.13教程

    centos64位Linux7.5 安装mysql8.0.13教程 注意事项提前说明: 1:吾日三省吾身,防火墙关了没?(万一安装好了的MySQL,链接不上半天没有想到是防火墙在作祟)标点符号中英文搞 ...

  8. MySQL8.0卸载教程

    「作者主页」:士别三日wyx 「作者简介」:CSDN top200.阿里云博客专家.华为云享专家.网络安全领域优质创作者 安装MySQL可参考我的另一篇文章:MySQL 8.0安装教程 使用MySQL ...

  9. MySQL8.0安装教程,在Linux环境安装MySQL8.0教程,最新教程 超详细

    在Linux系统安装MySQL8.0,网上已经有很多的教程了,到自己安装的时候却发现各种各样的问题,现在把安装过程和遇到的问题都记录下来. 需要说明的一点是我使用的是SSH secure shell ...

最新文章

  1. 教你用Python解决非平衡数据问题(附代码)
  2. mstsc连接远程桌面如何挂载本地磁盘
  3. python爬取csdn排名积分等信息
  4. Python使用远程仓库时建议忽略的文件
  5. python 16bit转8bit的工具_利用python读取YUV文件 转RGB 8bit/10bit通用
  6. 北妈是谁、谁是北妈?他为何如此帅?
  7. Spring boot工程创建
  8. .Net 让网页列表的前3条显示New图标
  9. Map习题 - 三国武将基础信息处理
  10. Mac系统下设置Maven环境
  11. javascript中 try catch finally 的使用
  12. 为什么阿里巴巴禁止在foreach里进行元素的remove/add操作
  13. rk3399 rt5640 录音调试记录
  14. 爱豆被“调包”?周杰伦:说好不哭
  15. 好家伙!MIT博士生凭借「扭动奥利奥饼干」发了篇论文!
  16. 如何使用Python进行投资收益和风险分析
  17. android开发笔记之reflect使用
  18. 小程序转uniapp——disabled
  19. Drupal9.1.8通过phpStudy安装后除首页其他页面均404处理
  20. Opencv 基础(三):使用OpenCV裁剪图像

热门文章

  1. 3月28日服务器维护,【已开服】3月28日全部服务器更新维护公告
  2. nokia vcf文件导入iphone(转)
  3. 如果你能看到,请你帮我一起转,转到全中国
  4. python搬运youtube视频到大鱼_【具体介绍请点开详细】大鱼 绯闻外援 矿工泰森·弗兰达 集锦(油管搬运)...
  5. 优雅地使用pt-archiver进行数据归档
  6. CSS 如何实现文字两端对齐
  7. python Format()函数的用法___实例详解(一)(全,例多)___各种格式化替换,format对齐打印
  8. js获取当前时间,精确到毫秒
  9. 淮工CTF——misc部分wp
  10. RoHS1.0 仪器操作规范指导