mysql 10 单表访问方法

01.优化的过程

对于我们这些 MySQL 的使用者来说, MySQL 其实就是一个软件,平时用的最多的就是查询功能。DBA时不时丢过来一些慢查询语句让优化,我们如果连查询是怎么执行的都不清楚还优化个毛线,所以是时候掌握真正的技术了。我们在第一章的时候就曾说过, MySQL Server 有一个称为 查询优化器 的模块,一条查询语句进行语法解析之后就会被交给查询优化器来进行优化,优化的结果就是生成一个所谓的 执行计划 ,这个执行计划表明了应该使用哪些索引进行查询,表之间的连接顺序是啥样的,最后会按照执行计划中的步骤调用存储引擎提供的方法来真正的执行查询,并将查询结果返回给用户。

1.2 举个例子

在这里插入图片描述02.查询有两种方式:

回到 MySQL 中来,我们平时所写的那些查询语句本质上只是一种声明式的语法,只是告诉 MySQL 我们要获取的数据符合哪些规则,至于 MySQL 背地里是怎么把查询结果搞出来的那是 MySQL 自己的事儿。对于单个表的查询来说,设计MySQL的大叔把查询的执行方式大致分为下边两种:在这里插入图片描述
设计 MySQL 的大叔把 MySQL 执行查询语句的方式称之为 访问方法 或者 访问类型 。同一个查询语句可能可以使用多种不同的访问方法来执行,虽然最后的查询结果都是一样的,但是执行的时间可能差老鼻子远了,就像是从钟楼到大雁塔,你可以坐火箭去,也可以坐飞机去,当然也可以坐乌龟去。下边细细道来各种 访问方法 的具体内容。

2.1 const

2.1.1 主键查询

在这里插入图片描述
原谅我把聚簇索引对应的复杂的 B+ 树结构搞了一个极度精简版,为了突出重点,我们忽略掉了 页 的结构,直接把所有的叶子节点的记录都放在一起展示,而且记录中只展示我们关心的索引列,对于 single_table 表的聚簇索引来说,展示的就是 id 列。我们想突出的重点就是: B+ 树叶子节点中的记录是按照索引列排序的,对于的聚簇索引来说,它对应的 B+ 树叶子节点中的记录就是按照 id 列排序的。

2.1.2 唯一二级索引

B+ 树本来就是一个矮矮的大胖子,所以这样根据主键值定位一条记录的速度贼快。类似的,我们根据唯一二级索引列来定位一条记录的速度也是贼快的,比如下边这个查询:在这里插入图片描述
在这里插入图片描述
可以看到这个查询的执行分两步,第一步先从 idx_key2 对应的 B+ 树索引中根据 key2 列与常数的等值比较条件定位到一条二级索引记录,然后再根据该记录的 id 值到聚簇索引中获取到完整的用户记录。设计 MySQL 的大叔认为通过主键或者唯一二级索引列与常数的等值比较来定位一条记录是像坐火箭一样快的,所以他们把这种通过主键或者唯一二级索引列来定位一条记录的访问方法定义为: const ,意思是常数级别的,代价是可以忽略不计的。

2.2 ref

有时候我们对某个普通的二级索引列与常数进行等值比较,比如这样:

对于这个查询,我们当然可以选择全表扫描来逐一对比搜索条件是否满足要求,我们也可以先使用二级索引找到对应记录的 id 值,然后再回表到聚簇索引中查找完整的用户记录。由于普通二级索引并不限制索引列值的唯一性,所以可能找到多条对应的记录,也就是说使用二级索引来执行查询的代价取决于等值匹配到的二级索引记录条数。

如果匹配的记录较少,则回表的代价还是比较低的,所以 MySQL 可能选择使用索引而不是全表扫描的方式来执行查询。设计 MySQL 的大叔就把这种搜索条件为二级索引列与常数等值比较,采用二级索引来执行查询的访问方法称为: ref 。我们看一下采用 ref 访问方法执行查询的图示

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/892019.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LED显示屏与手机连接:简单便捷的操作指南

随着科技的飞速发展,LED显示屏已经成为现代商业和公共信息展示的重要工具。它们不仅在户外广告中扮演着重要角色,室内应用也越来越广泛。智能手机的普及使得我们希望能够通过手机直接控制LED显示屏,以实现更灵活、更便捷的信息展示。那么&…

证件照小程序源码,前后端稳定运行

演示:证寸照制作 运行环境: Linux Nginx PHP >5.6 MySQL>5.6 安装步骤: 1.下载源码上传至你的服务器宝塔面板 2.直接添加站点选择源码目录,新建数据库 3.设置代码执行目录为/web 4.在浏览器中输入你的域名,会提示安装,填写…

5 -《本地部署开源大模型》在Ubuntu 22.04系统下ChatGLM3-6B高效微调实战

在Ubuntu 22.04系统下ChatGLM3-6B高效微调实战 无论是在单机单卡(一台机器上只有一块GPU)还是单机多卡(一台机器上有多块GPU)的硬件配置上启动ChatGLM3-6B模型,其前置环境配置和项目文件是相同的。如果大家对配置过程还…

Django的模板语法

Django的模板语法 1、初步认识2、原理 1、初步认识 本质上:在HTML中写一些占位符,由数据对这些占位符进行替换和处理。 在views.py中用字典(键值对)的形式传参,在html文件中用两个花括号来显示单独的值 列表、元组等数…

【UI】将 naive ui 的 message 封装进axios 中,关于naiveui的message相关的用法

文章目录 前言在setup外进行使用直接包裹使用vue 单文件中使用 参考文章: 关于naiveui的message相关的用法 前言 最近新建了一个vite vu3 的项目,完全是从0 到1 ,封装到request 的时候 想对axios 请求做一个全局的处理,但发现…

dart-sass和node-sass的区别,使用dart-sass后可能会出现的问题

前言: 2020 年 10 月 27 日,Sass 官方团队正式宣布 Libsass 将弃用,以及基于它的 Node Sass 和 SassC,并且建议用户使用 Dart Sass。如果在 vue 脚手架搭建的项目中需要使用 sass,建议初始化时勾选 sass 配置&#xff…

扫雷(C 语言)

目录 一、游戏设计分析二、各个步骤的代码实现1. 游戏菜单界面的实现2. 游戏初始化3. 开始扫雷 三、完整代码四、总结 一、游戏设计分析 本次设计的扫雷游戏是展示一个 9 * 9 的棋盘,然后输入坐标进行判断,若是雷,则游戏结束,否则…

Redis拒绝连接问题分析与解决方案

目录 前言1. 问题描述2. Redis拒绝连接的常见原因分析2.1 Redis服务未启动2.2 Redis配置中的绑定地址问题2.3 防火墙或安全组问题2.4 Redis连接池耗尽2.5 Redis服务器负载过高2.6 权限配置问题 3. 深度解决方案和优化建议4. 总结 前言 在分布式系统中,Redis作为高性…

Unity之XR Interaction Toolkit 射线拖拽3DUI

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、想实现的功能二、实现原理1.UI挂在XRGrabInteractable、刚体、BoxCollder2.修改刚体属性3.加BoxCollder 总结 前言 VR项目里正常情况有放置两种3DUI的方式…

Git之代已修改文件的目录高亮设置

不管Android Studio或者Idea,进入Setting 选择如图所示,并进行勾选 就可以高亮了。

2023年10月自考《数据库系统原理》04735试题

目录 一.选择题 二.填空题 三.设计题 四.简答题 五.综合体 一.选择题 1.下列属于数据库中存储数据基本特点是 (书中)P28页 A.冗余大 B.无组织 C.不可共享 D.永久存储 2.浏览器/服务器结构描述不正确的是 (书中)P36页 A.三层客户/服务器结构 B.基于Web引用的客户/服务器…

AWD入门

一、简介 AWD(Attack With Defense,攻防兼备)模式。你需要在一场比赛里要扮演攻击方和防守方,攻者得分,失守者会被扣分。也就是说攻击别人的靶机可以获取 Flag 分数时,别人会被扣分,同时你也要保护自己的主机不被别人…

武汉正向科技|焦炉移动机车连锁控制系统的介绍

焦炉车辆连锁控制系统是采用格雷母线定位技术,无线数据传输技术以及计算机技术,实现推焦车、拦焦车、熄焦车、装煤车、导烟车的集中监控和系统管理,以及车间作业计划管理,作业实绩管理,作业联锁控制及安全控制等。 焦炉…

Unlock the Power of Frozen LLMs in Knowledge Graph Completion

文章目录 题目摘要引言方法实验相关工作结论局限性附录 题目 在知识图完成中释放冻结LLM的力量 论文地址:https://arxiv.org/abs/2408.06787 摘要 传统的知识图完成(KGC)方法仅仅依赖于结构信息,难以克服知识图固有的稀疏性。大型语言模型(LLM)通过强大…

3dsMax添加天空盒

点击渲染,环境 , 点击位图 找到要设置的天空HDR,可以使用HDR(EXR)贴图 一个可以下载HDR贴图的网站 https://polyhaven.com/hdris在渲染的时候不要使用使用微软输入法,3dsmax会卡死, 在渲染的时候不要使用使用微软…

2013年国赛高教杯数学建模D题公共自行车服务系统解题全过程文档及程序

2013年国赛高教杯数学建模 D题 公共自行车服务系统 公共自行车作为一种低碳、环保、节能、健康的出行方式,正在全国许多城市迅速推广与普及。在公共自行车服务系统中,自行车租赁的站点位置及各站点自行车锁桩和自行车数量的配置,对系统的运行…

MySQL 9从入门到性能优化-二进制日志

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…

python车牌号OCR识别(centos版)

在实际应用中,车牌号的识别(OCR)是一个非常重要的需求,尤其是在停车场管理、道路监控等场景中。本文将介绍如何在CentOS环境下,通过Docker容器,基于PaddleOCR来实现车牌号的识别。具体内容包括构建Docker镜像的步骤、相关依赖安装…

antd vue 输入框高亮设置关键字

<highlight-textareaplaceholder"请输入主诉"type"textarea"v-model"formModel.mainSuit":highlightKey"schema.componentProps.highlightKey"></highlight-textarea> 参考链接原生input&#xff0c;textarea demo地址 …

网站建设为什么要选择国内服务器

选择国内服务器进行网站建设&#xff0c;对于面向国内用户的企业来说&#xff0c;是一个明智的决策。以下是一些选择国内服务器的主要原因&#xff1a; 提升用户体验&#xff1a; 网站访问速度是用户体验的关键因素之一。由于物理距离较近&#xff0c;国内服务器通常能提供更快…