10-Mysql内核查询成本计算实战-04

连接查询的成本计算公式是这样的:
连接查询总成本 = 单次访问驱动表的成本 + 驱动表扇出数 x 单次访问被驱动表的成本
对于左(外)连接和右(外)连接查询来说,它们的驱动表是固定的,所以想要得到最优的查询方案只需要分别为驱动表和被驱动表选择成本最低的访问方法。
可是对于内连接来说,驱动表和被驱动表的位置是可以互换的,所以需要考虑两个方面的问题:

不同的表作为驱动表最终的查询成本可能是不同的,也就是需要考虑最优的表连接顺序。然后分别为驱动表和被驱动表选择成本最低的访问方法。很显然,计算内连接查询成本的方式更麻烦一些,下边我们就以内连接为例来看看如何计算出最优的连接查询方案。当然在某些情况下,左(外)连接和右(外)连接查询在某些特殊情况下可以被优化为内连接查询。
我们来看看内连接,比如对于下边这个查询来说:

SELECT * FROM order_exp AS s1 INNER JOIN order_exp2 AS s2 ON s1.order_no=
s2.order_note WHERE s1.expire_time> '2021-03-22 18:28:28' AND
s1.expire_time<= '2021-03-22 18:35:09' and s2.expire_time> '2021-03-22
18:35:09' AND s2.expire_time<= '2021-03-22 18:35:59'; < code></=></=>

可以选择的连接顺序有两种:
s1连接s2,也就是s1作为驱动表,s2作为被驱动表。
s2连接s1,也就是s2作为驱动表,s1作为被驱动表。
查询优化器需要分别考虑这两种情况下的最优查询成本,然后选取那个成本更低的连接顺序以及该连接顺序下各个表的最优访问方法作为最终的查询计划。我们定性的分析一下,不像分析单表查询那样定量的分析了:

使用s1作为驱动表的情况

分析对于驱动表的成本最低的执行方案,首先看一下涉及s1表单表的搜索条件有哪些:

s1.expire_time> '2021-03-22 18:28:28' AND s1.expire_time<= '2021-03-22 18:35:09' < code></=>

所以这个查询可能使用到idx_expire_time索引,从全表扫描和使用idx_expire_time这两个方案中选出成本最低的那个,很显然使用idx_expire_time执行查询的成本更低些。然后分析对于被驱动表的成本最低的执行方案,此时涉及被驱动表s2的搜索条件就是:
1、s2.order_note = 常数(这是因为对驱动表s1结果集中的每一条记录,都需要进行一次被驱动表s2的访问,此时那些涉及两表的条件现在相当于只涉及被驱动表s2了。)
2、s2.expire_time> ‘2021-03-22 18:35:09’ AND s2.expire_time

Original: https://blog.csdn.net/Victor_An/article/details/127813420
Author: Victor_An
Title: 10-Mysql内核查询成本计算实战-04

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/654117/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 合作式智能运输系统通信架构

    1 范围 本标准规定了合作式智能运输系统通信架构的通信系统术语、功能和接口定义。 本标准适用于合作式智能运输系统的通信系统的设计、开发、运行和维护。 2 规范性引用文件 下列文件对…

    人工智能 2023年6月2日
    070
  • 学习笔记:多模态

    1.多模态数据: 不同的存在形式或信息来源均可被称之为一种模态。由两种或两种以上模态组成的数据称之为多模态数据(多模态用来表示不同形态的数据形式,或者同种形态不同的格式,一般表示文…

    人工智能 2023年6月23日
    087
  • PyTorch是什么

    PyTorch是什么? PyTorch是一个用于构建神经网络的开源机器学习库,它提供了丰富的工具和接口,使得我们能够更轻松地设计和训练深度学习模型。PyTorch的灵活性和易用性使…

    人工智能 2024年1月2日
    046
  • 目标分割概述

    目录 目标分割介绍 * 图像分割的定义 任务类型 – 任务描述 任务类型 常用的开源数据集 – VOC数据集 城市风光Cityscapes数据集 评价指标 …

    人工智能 2023年6月20日
    066
  • Go写文件的权限 WriteFile(filename, data, 0644)?

    本文来自博客园,作者:阿伟的博客,转载请注明原文链接:https://www.cnblogs.com/cenjw/p/go-ioutil-writefile-perm.html 前…

    人工智能 2023年6月4日
    082
  • 分类评价指标 F值 详解 | Micro F1 & Macro F1 & Weight F1

    之前写一个作业样本不均衡问题。然后查了很多文章都说要更换评价指标,不能再使用准确率了,要计算F值。我看了一下F值怎么计算,看了挺多文章的,但是感觉说的比较迷惑,或者说法比较拗口。最…

    人工智能 2023年6月30日
    0142
  • 【SPSS】重复测量设计方差分析-单因素

    首先,重复测量设计方差分析需满足三个条件:正态、方差齐、满足球形度。 单因素重复测量 单因素重复没有组间干预措施的影响,只有主体内(时间)的影响。 1.数据介绍 8份血样,分别检测…

    人工智能 2023年7月15日
    066
  • Retinanet网络详解

    Retinanet 网络结构详解以及源代码讲解 网络backbone使用ResNet【18, 34, 50, 101, 152】 FPN层 首先输入的照片的大小为672×…

    人工智能 2023年7月5日
    0103
  • VITS 语音合成完全端到端TTS的里程碑

    Conditional Variational Autoencoder with Adversarial Learning for End-to-End Text-to-Speec…

    人工智能 2023年5月27日
    0150
  • ICML 2022|达摩院多模态模型OFA,实现模态、任务和架构三个统一

    作者:霜清、钟煌、鸿侠 通用统一的预训练大模型逐渐成为AI研究的一大趋势,本文将介绍达摩院提出的多模态模型OFA,是如何实现架构、模态、任务的三个统一。 近年来,基于大规模无监督数…

    人工智能 2023年5月26日
    0124
  • 从零开始的线性回归的代码实现

    (注:我们将从零开始实现整个方法,包括流水线,模型,损失函数和小批量随机梯度下降优化器) 一:需要的包,并载入 random(juterbook好像是自带了) torch d2l …

    人工智能 2023年6月17日
    098
  • KG知识图谱

    KG知识图谱 1 知识图谱创建过程:major steps of an overall process model:1 knowledge creation,2 knowledge…

    人工智能 2023年6月1日
    098
  • 学习OpenCV3——图像旋转算法实现

    图像旋转是非常常见的图像变换,通常应用于图像矫正,在OpenCV可以使用密集仿射变换函数cv::warpAffine()实现图像旋转。为了理解图像旋转的原理,本文实现了一个图像旋转…

    人工智能 2023年6月19日
    0103
  • 图像处理—霍夫曼编码

    图像压缩编码是专门研究图像数据压缩的技术,就是尽量减少表示数据图像所需要的数据量。本章主要介绍图像压缩编码的基础知识,重点讲解常用的图像压缩编码方法,如霍夫曼编码、香农编码、算术编…

    人工智能 2023年6月18日
    069
  • 使用C#写一个Windows服务

    创建服务程序 可能你的VS里面没有【Windows服务】这个模板,那么你就需要通过”打开Visual Studio安装程序”,通过VisualStudio …

    人工智能 2023年7月30日
    073
  • 安卓–多指触控

    1、体验与发现 首先看一下代码: @Override public boolean onTouchEvent(MotionEvent event) { switch (event….

    人工智能 2023年6月27日
    086
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球