当前位置: 首页 > article >正文

我们来学mysql -- EXPLAIN之select_type(原理篇)

EXPLAIN之select_type

  • 题记
  • select_type

题记

  • 书接上文《 EXPLAIN之ID》
  • 2024美国大选已定,川普剑登上铁王座,在此过程中出谋划策的幕僚很重要,是他们决定了最终的执行计划
  • 在《查询成本之索引选择》中提到,explain的输出,就是优化器(幕僚)选择的执行计划
  • 除了SELECT开头的查询,DELETE、INSERT、UPDATE也都有执行计划,这里只关注SELECT
  • 从输出的计划中可见很多字段,传达了什么样的信息,接下来看select_type

select_type

  • 一条sql语句可包含多个select关键字, select_type标记每个小查询扮演了什么

  • SIMPLE

    • 没有子查询,普通不过如此
      • select * from ucoding where k1 = 'Td621'
        在这里插入图片描述
    • 可以有JOIN连接,但不通过UNION连接
      • select * from ucoding JOIN icoding on k1 = i_k1 where mark = 'Td621'
        在这里插入图片描述
  • PRIMARY

    • 包含UNIONUNION ALL, 由几个小查询组成,标记最左边的查询为PRIMARY
      • select * from ucoding where k3 ='tt'union select * from icoding where i_k3 ='tt'
        在这里插入图片描述
    • 包含子查询,由几个小查询组成,标记最左边的查询为PRIMARY
      • 子查询在条件中
      • select * from ucoding where k1 in (SELECT i_k1 from icoding ) or k3 = 'a'
        在这里插入图片描述
      • 子查询在输出字段中
      • select * , (SELECT i_k1 from icoding WHERE i_k1 = ut.k1 ) from ucoding ut
        在这里插入图片描述
  • UNION

    • 包含UNIONUNION ALL,除了最左边,其余标记UNION
      • select * from ucoding where k3 ='tt' union select * from icoding where i_k3 ='tt'
        在这里插入图片描述
  • UNION RESULT

    • UNION使用临时表进行去重,标记临时表的查询为UNION RESULT,参考上图介绍
  • SUBQUERY

    • 这简单,无非就是select查询穿插在一个“”select中(非union连接 )
      • select * from ucoding where k1 in (SELECT i_k3 from icoding WHERE i_mark= 'tt' )
        在这里插入图片描述
      • 一看傻眼了,我的子查询呢!!!,凌乱
        在这里插入图片描述
    • 官方是这样说的
      • 包含子查询的查询sql无法转为对应的半连接形式
      • 并且子查询是不相关子查询
      • 而且查询优化器决定将子查询物化来执行该子查询
    • 接下来的领域,非无矩境的夫子才可踏入,尔等怎能看清这道法天象
      在这里插入图片描述
    • 所以,我等退下,现在知道了有这种情况即可

http://www.kler.cn/a/393664.html

相关文章:

  • #include<string>和#include<string.h>有什么区别
  • 01:(手撸HAL+CubeMX)时钟篇
  • ios swift开发--ios远程推送通知配置
  • Bugku CTF_Web——文件上传
  • HTTP协议基础
  • 使用 Visual Studio Installer 彻底卸载 Visual Studio方法与下载
  • Rocky9/Ubuntu使用pip安装python的库mysqlclient失败解决方式
  • C# 实现对指定句柄的窗口进行键盘输入的实现
  • C++研发笔记13——C语言程序设计初阶学习笔记11
  • MongoDB新版本安装配置教程(7.0.15版本-zip下载)
  • 构建Spring Boot编程训练系统:全面指南
  • springboot初体验
  • [Docker#5] 镜像仓库 | 命令 | 实验:搭建Nginx | 创建私有仓库
  • 加入GitHub Spark需要申请
  • Hive基础
  • JUC学习笔记
  • 零基础Java第十六期:抽象类接口(二)
  • 【NLP】2024 年十大 RAG 框架 Github
  • Redis设计与实现 学习笔记 第十七章 集群
  • 2024 kali操作系统安装Docker步骤
  • 【论文复现】交通路口智能监测平台实现
  • Ajax 获取进度和中断请求
  • 华为OD机试真题-仿LISP计算
  • GitHub每日最火火火项目(11.14)
  • 服务器硬件介绍
  • 自动驾驶系列—从数据采集到存储:解密自动驾驶传感器数据采集盒子的关键技术