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

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

EXPLAIN之ID

  • 题记
  • ID

题记

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

ID

  • 为每一个select分配唯一的ID

  • 单表查询

    • EXPLAIN select * from ucoding where k1 = 'Td621'
      在这里插入图片描述
  • 多表连接查询

    • EXPLAIN select * from ucoding u1 JOIN icoding on k1 = i_k1 where mark = 'Td621'
      在这里插入图片描述

    • 欸!快看,明明只一个select,有两个执行计划,哈哈哈…
      在这里插入图片描述

      • 咱来解释下,首先这依然是当前select的执行计划,和记录数无关,难道去做大保健只是洗个脚吗,洗脚只是计划中的一个步骤
      • 连接查询语句,每个表都有条记录,神如innodb,TA也得挨个表处理是不!
      • 再有,在连接查询语句,有驱动表被驱动表时,id相同
  • 涉及多个select(子查询)

    • EXPLAIN select * from ucoding where k1 in (SELECT i_k1 from icoding ) or k3 = 'a'
      在这里插入图片描述
  • 涉及多个select(union)

    • EXPLAIN select * from ucoding where k3 ='tt' union select * from icoding where i_k3 ='tt'
    • id = null ,表示为临时表,因为 union需要去重, union all不需要去重,就没有临时表 在这里插入图片描述
      ``

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

相关文章:

  • 个人笔记:ORM数据库框架EFCore使用示例,运行通过,附源码
  • 使用idea创建JDK8的SpringBoot项目
  • Pytorch | 从零构建EfficientNet对CIFAR10进行分类
  • 一篇文章学会HTML
  • IT运维的365天--021 服务器上的dns设置后不起作用
  • 递归读取指定目录下的文件
  • 爱普生 SG - 8201CJA 可编程振荡器成为电子应用的解决方案
  • 【LeetCode】【算法】142. 环形链表II
  • 开放寻址法、链式哈希数据结构详细解读
  • Vue3 + Element Plus简单使用案例及【eslint】报错处理
  • 【漏洞复现】Apache Druid RCE (CVE-2023-25194) 漏洞
  • Linux与Windows中的流量抓取工具:wireshark与tcpdump
  • 防火墙|WAF|漏洞|网络安全
  • 【LeetCode】【算法】215. 数组中的第K个最大元素
  • 内外连接【MySQL】
  • 机器学习(三)——决策树(附核心思想、重要算法、概念(信息熵、基尼指数、剪枝处理)及Python源码)
  • Flutter UI构建渲染(4)
  • Windows10/11下python脚本自动连接WiFi热点
  • STM32启动文件分析
  • Axure是什么软件?全方位解读助力设计入门
  • 实践是认识的来源
  • GPU的内存是什么?
  • 继承——面向对象编程的基石
  • 【C++】lambda表达式的理解与运用(C++11新特性)
  • [C++ 核心编程]笔记 4.4.2 类做友元
  • 【Vue 2.x】之指令详解