MySQL延时关联使查询速度提升N倍

news2025/1/16 4:48:42

以下内容也可以观看视频教程: https://space.bilibili.com/431152063

先来看下面的sql语句:

select * from orderinfo limit 1000000, 100

目前orderinfo表中的数据大概是1亿行

查询耗时大概2秒多,如果将sql中的返回所有字段改成只返回dbid字段(dbid是主键),查询耗时缩短为0.2秒。

这是因为使用到了覆盖索引。

覆盖索引是指select查询返回的数据列都包含于索引中,这样从索引中就能获取数据,无需读取数据行。比如下面的sql语句:

select addressDbid from orderinfo limit 0, 100

addressDbid列已经创建了索引,sql中只需要返回索引列addressDbid,所以用到了覆盖索引。

以下讨论都是基础innodb存储引擎的。

在mysql的innodb存储引擎中,所有的表数据都是存放到索引中的,并且以主键为索引列,这个索引叫聚集索引。聚集索引是mysql自动创建的。

而由我们创建的索引叫二级索引或辅助索引,二级索引中只保存索引列和主键,当select语句中要获取某一行的其他列,必须用主键去聚集索引中获取,这个过程叫“回表”。由于覆盖索引减少了“回表”步骤,所以速度明显提升。

现在回到这个sql语句:

select dbid from orderinfo limit 1000000, 100

由于语句只使用到了聚集索引,而表的所有数据也都是存放到聚集索引中的,所以不存在“回表”这种情况,那这个语句速度为什么会快呢?

因为数据库表数据是以文件的形式存放到硬盘上,硬盘的速度相比内存要慢很多,频繁访问会非常耗时,上面的语句由于只需要返回dbid主键(也是聚集索引的索引列),不需要返回其他列,减少了访问硬盘,所以速度要快很多。

但是,平常使用时不会仅仅需要返回一个主键,而是需要这一行的所有列数据,改进一下上面的sql:

select * from orderinfo o
inner join (select dbid from orderinfo limit 10000000, 100) as o2 on o.dbid = o2.dbid 

通过dbid连接一下原表orderinfo就可以了。

耗时基本没有影响。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux驱动开发基础__APP怎么读取按键值

目录 1 妈妈怎么知道孩子醒了 2 APP读取按键的4种方法 2.1 查询方式 2.2 休眠-环形方式 2.3 poll方式 2.4 异步通知方式 在做单片机开发时,要读取 GPIO 按键,我们通常是执行一个循环,不断地 检测 GPIO 引脚电平有没有发生变化。但是在 Li…

进入保护模式

文章目录前言前置知识代码说明实验操作前言 本博客记录《操作系统真象还原》第四章实验操作~ 实验环境:ubuntu18.04VMware , Bochs下载安装 实验内容:实现从MBR到LOADER,由LOADER实现进入保护模式 实验原理:计算机…

Cadence PCB仿真分配电压网络电压时网络未自动识别问题解决方案

⏪《上一篇》   🏡《总目录》   ⏩《下一篇》 目录 1,问题概述2,分配方法3,避免方法4,总结1,问题概述 如下图所示在使用Allegro PCB SI为电源网络分配电压时,有些网络实际上是电源网络,但是未被自动识别,无法对齐分配电压,具体解决方法如下。 2,分配方法 第1…

最近新开源的基于单目稠密重建NeRF-SLAM

点云PCL免费知识星球,点云论文速读。文章:NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields作者:Antoni Rosinol John J. Leonard Luca Carlone编辑:点云PCL代码:https://github.com/ToniRV/N…

JavaScript 异步函数解析

前言 在学习 JavaScript 的过程中,理解并灵活运用异步相关知识是一件不容易的事情,这体现在代码可读性、健壮性上,好在 ES6 出现后挽回了这一局面,我们不再需要编写可读性不高的回调嵌套,也不用为了代码的健壮性而处处…

spring boot使用TaskScheduler实现动态增删启停定时任务

TaskScheduler 概述 TaskScheduler是spring 3.0版本后,自带了一个定时任务工具,不用配置文件,可以动态改变执行状态。也可以使用cron表达式设置定时任务。 被执行的类要实现Runnable接口 TaskScheduler是一个接口,它定义了6个…

具有梯度流的一类系统的扩散图卡尔曼滤波(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

FEW-SHOT TEXT CLASSIFICATION WITH DISTRIBUTIONAL SIGNATURES

摘要 在这篇文章中,我们利用元学习进行文本分类,元学习在计算机视觉中有相当好的效果,在这里,低层次的模式可以跨学习任务迁移的,,然而,直接将这个方法应用到文本中是具有挑战性的,…

【自学C++】C++输入cin

C输入cin C输入cin教程 在 C 语言 中我们需要捕获用户的键盘输入,可以使用 scanf 函数。scanf 函数在输入时,我们必须要指定输入的数据类型对应的格式化符,挺不方便。 在 C 中,我们要捕捉用户的输入,直接使用 std 命…

【目标检测】C-GhostNet

1、论文 论文题名:《GhostNet: More Features from Cheap Operations》 arxiv:https://arxiv.org/abs/1911.11907 github:https://github.com/huawei-noah/ghostnet 作者翻译:https://zhuanlan.zhihu.com/p/109325275 2、摘要 本篇论文是华…

2023/1/6 Vue学习笔记-2

1 收集表单数据 收集表单数据&#xff1a; 若&#xff1a;<input type"text">&#xff0c;则v-model收集的是value的值&#xff0c;用户输入的就是value值。 若&#xff1a;<input type"radio">&#xff0c;则v-modle收集的是value的值&…

String、StringBuffer和StringBuilder

String 类是不可变类&#xff0c;即一旦一个 String 对象被创建以后&#xff0c;包含在这个对象中的字符序列是不可改变的&#xff0c;直至这个对象被销毁。 Java 提供了两个可变字符串类 StringBuffer 和 StringBuilder&#xff0c;中文翻译为“字符串缓冲区”。 StringBuil…

Python和MySQL对比(3):用Pandas 实现MySQL的子查询、like_regexp、case when_if语法效果

文章目录一、前言二、语法对比数据表子查询like/regexpcase when/ifin三、小结一、前言 环境&#xff1a; windows11 64位 Python3.9 MySQL8 pandas1.4.2 本文主要介绍 MySQL 中的子查询、like/regexp、case when/if 如何使用pandas实现&#xff0c;同时二者又有什么区别。 注…

FPGA中二进制数的运算

一、B比特的二进制数可以表示的范围 无符号整数&#xff1a;0~2B-1 有符号整数&#xff1a;-2B-1~2B-1-1 二、有符号数&#xff08;补码&#xff09;与十进制数之间的转换 D&#xff1a;十进制数 B&#xff1a;二进制数aB-1aB-2a1a0的位数 aB-1:符号位 三、符号位拓展 在使…

Android 12 蓝牙适配 Java版

Android 12.0蓝牙适配前言正文一、Android版本中蓝牙简介二、新建项目① 配置build.gradle② 配置AndroidManifest.xml三、打开蓝牙① 打开蓝牙意图② 请求BLUETOOTH_CONNECT权限意图四、蓝牙扫描① 扫描者② 扫描回调③ 扫描方法④ 执行扫描⑤ 应用不推导物理位置五、页面显示…

基于Java+Springboot+vue体育用品销售商城平台设计和实现

基于JavaSpringbootvue体育用品销售商城平台设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取…

Docker部署JAVA项目

一、 Docker安装 1、yum 包更新到最新 yum update 2、安装需要的软件包&#xff0c; yum-util 提供yum-config-manager功能&#xff0c;另外两个是devicemapper驱动依赖的 yum install yum-utils device-mapper-persistent-data lvm2 -y 3、 设置yum源 yum-config-manage…

等级保护----1、网络安全等级保护一级安全测评要求

文章目录一、安全测评通用要求1、安全物理环境1.1 物理访问控制1.2 防盗窃和防破坏1.3 防雷击1.4 防火1.5 防水和防潮1.6 温湿度控制1.7 电力供应2、安全通信网络2.1 通信传输2.2 可信验证3、安全区域边界3.1 边界防护3.2 访问控制3.3 可信验证4、安全计算环境4.1 身份鉴别4.2 …

使用关键字like进行模糊查询

【模糊查询】&#xff1a;使用关键字like [支持%或者下划线匹配&#xff0c;%匹配任意多个字符&#xff0c;一个下划线只匹配任意一个字符。] 实例&#xff1a; 查询名字中带有字母o的员工&#xff1a; select * from emp where ename like %o%; 找出名字以T结…

2000-2021.3月土地交易高频数据库(含爬取代码和数据)

2000-2021.3月土地交易高频数据库&#xff08;含爬取代码和数据&#xff09; 1、时间跨度&#xff1a;2000-2021年3月1日 2、指标&#xff1a;年份、电子监管号、所在省份、所在城市、所在区县、经度、纬度、项目名称、项目位置、面积、土地来源、土地用途、供地方式、土地使…