mysql索引为什么提高查询速度(底层原理)

一、索引原理图 

二、索引数据存储到硬盘而不是内存?

                硬盘内存
               成本低成本高
              容量大容量小
              读写速度一般读取速度快
             断电后数据永久存储断电后数据清空

三、硬盘数据为什么要读取到内存?为啥不直接读取硬盘

      1、将数据直接从硬盘读取可能会导致较长的等待时间,影响系统的响应速度

      2、将数据读取到内存中,可以充分利用内存的高速读写能力,加快数据的访问速度

      3、通过将数据缓存到内存中,可以减少对硬盘的频繁读写,降低硬盘的负载,延长硬盘的使用寿命

四、为什么要分块读取?

     1、减少硬盘寻道时间:硬盘的读取速度相对较慢,将数据分成多个块进行读取,可以减少硬盘进行寻道的次数

     2、提高数据传输效率:硬盘数据的读取通常是通过DMA(直接内存访问)技术进行的,而DMA传输的单位是块。将数据分成多个块进行读取,可以充分利用DMA的高效传输能力

    3、避免内存浪费:将数据分块读取可以避免一次性将大量数据加载到内存中,从而避免浪费内存资源。同时,分块读取也可以更好地适应内存的大小限制

五、索引提高查询效率本质,

       减少IO次数和量

1、减少数据读取量:索引更快地定位到需要的数据行,从而减少了需要扫描的数据量,减少IO次数

2、利用索引覆盖:索引覆盖是指查询语句只需要通过索引就能够取得需要的数据,而无需再次访问数据行

3、顺序访问:利用索引的有序性,进行顺序访问,减少磁盘IO的随机访问

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【狂神】Spring5笔记(四)之Mybatis和事物的整合

一、整合Mybatis方式一 目录结构: 大致内容结构: 主要难点就在于applicationContext.xml中相关配置的理解 代码图片如下 这个类就专门用于对象的创建就可以了 测试类: 实现类: SqlSessionTemplate 二、整合Mybatis方式二 相关代码…

Go在安装Gin时出现Failed to connect 报错问题的解决方案(已解决)

在命令行中输入:go get -u github.com/gin-gonic/gin指令安装Gin第三方包时出现连接错误与连接超时的情况如下: 在较新版本的Go中引入了全新的包管理机制,出现上述错误可能是包管理机制设置不恰当的问题,尝试在终端窗口输入如下…

9-AJAX-3原理

AJAX-原理 目录 XMLHttpRequest 的学习Promise封装简易版 axios案例 - 天气预报 学习目标 了解原生 AJAX 语法 - XMLHttpRequest(XHR)了解 Promise 的概念和使用了解 axios 内部工作的大概过程(XHR Promise)案例 - 天气预报 …

DHCP工作过程详解

只有是一个网段的,它才会发送 ARP 请求,获取 MAC 地址。如果发现不是呢?Linux 默认的逻辑是,如果这是一个跨网段的调用,它便不会直接将包发送到网络上,而是企图将包发送到网关。 因为网关要和当前的网络至…

Vue3响应式源码实现

Vue3响应式源码实现 初始化项目结构 vue-proxy ├── effect.js ├── effect.ts ├── index.html ├── index.js ├── package.json ├── reactive.js ├── reactive.ts └── webpack.config.jsreactive.ts import { track, trigger } from "./effect&q…

leetcode 第 361 场周赛

2843. 统计对称整数的数目 核心思想:枚举每一个数是否是对称整数,第一种写法为python写法,第二种为一般写法我觉得更好,非常有思想性。 2844. 生成特殊数字的最少操作 核心思想:枚举特殊数字结尾的几种可能。其实自己做的时候一…

k8s环境部署配置

目录 一.虚拟机准备 二.基础环境配置(各个节点都做) 1.IP和hosts解析 2.防火墙和selinux 3.安装基本软件 4.配置时间同步 5.禁用swap分区 6.修改内核参数并重载 7.配置ipvs 三.docker环境(各个节点都做) 1.配置软件源并…

高数刷题笔记

在标准解答的时候可以用极限趋向于0去证明。上上图 性质解答则可以直接略去高阶,只看低阶。 先用等价无穷小将sin x换为x再看! 反函数此题可以用洛必达,也可以像这样去换自变量。 1-cosx2sin^2(x/2)x^2/2; 圈2表示了sinx ,x,tan x之间的差距…

MyBatis关系映射

文章目录 前言一、一对一映射1.1 创建实体1.2 xml配置 二、一对多映射2.1 创建实体2.2 resultMap配置2.3 测试 三、 多对多映射3.1 创建实体3.2 resultMap配置3.3 测试 前言 MyBatis是一个Java持久化框架,它提供了一种将数据库表和Java对象之间进行关系映射的方式。…

神经网络NLP基础 循环神经网络 LSTM

用的时候,只关心token的输入,以及hidden state就好了 sequence的length是多少,lstm的cell的数量就是多少 LSTM BI-LSTM stacked lstm GRU 实现

【SpringBoot应用篇】SpringBoot集成MinIO对象存储服务

【SpringBoot应用篇】SpringBoot集成MinIO对象存储服务 对象存储服务MinIOMinIO简介MinIO特点开箱使用docker安装启动管理控制台 快速入门Java 上传文件到minio配置访问权限 封装MinIO为starter创建模块zy-minio-starter配置类封装操作minIO类对外加入自动配置其他微服务使用 安…

海域可视化监管:浅析海域动态远程视频智能监管平台的构建方案

一、方案背景 随着科技的不断进步,智慧海域管理平台已经成为海洋领域监管的一种重要工具。相比传统的视频监控方式,智慧海域管理平台通过建设近岸海域视频监控网、海洋环境监测网和海上目标探测网络等,可实现海洋管理的数字化转型。 传统的…

【【萌新的STM32的学习--非正点原子视频的中断设计思路】】

萌新的STM32学习–非正点原子视频的中断设计思路 我们分析而言 我们对于PA0 的设计就从此而来 对于边沿触发的选择我们已经有所了解了 我们下拉,但是当我们摁下开关的时候 从0到1 导通了 所以这个是下拉 上升沿触发 而对于KEY0 我们摁下是使得电路从原来悬空高阻态…

MySQL之事务与引擎

目录 一、事物 1、事务的概念 2、事务的ACID特点 3、事务之间的相互影响 4、Mysql及事务隔离级别(四种) 1、查询会话事务隔离级别 2、查询会话事务隔离级别 3、设置全局事务隔离级别 4、设置会话事务隔离级别 5、事务控制语句 6、演示 1、测试提交事务 2、测试事务回滚 4…

Linux(基础IO)

Linux(基础IO) 前言C语言文件IO什么叫当前路径stdin/stdout/stderr 系统文件IOopenclosewriteread 文件描述符文件描述符的分配规则 重定向输出重定向原理追加重定向原理输入重定向原理dup2添加重定向功能到minishell 缓冲区模拟实现一个缓冲区 理解文件…

python webdriver 测试框架数据驱动json文件驱动的方式

简介: 数据驱动excel驱动方式,就是数据配置在excel里面,主程序调用的时候每次用从excel里取出的数据作为参数,进行操作, 需要掌握的地方是对excel的操作,要灵活的找到目标数据 测试数据.xlsx: 路径-D:\test\0627 E…

手写Mybatis:第15章-返回Insert操作自增索引值

文章目录 一、目标:Insert自增索引值二、设计:Insert自增索引值三、实现:Insert自增索引值3.1 工程结构3.2 Insert自增索引值类图3.3 修改执行器3.3.1 修改执行器接口3.3.2 抽象执行器基类 3.4 键值生成器3.4.1 键值生成器接口3.4.2 不用键值…

Milvus以及Web UI 安装

向量数据库懂的都懂 版本数据 [rootiZ7xv7q4im4c48qen2do2bZ project]# cat /etc/redhat-release CentOS Stream release 9 [rootiZ7xv7q4im4c48qen2do2bZ project]# docker version Client: Docker Engine - CommunityVersion: 24.0.5API version: 1.43Go v…

qt文件操作

对话框练习 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//字体按钮 void Widget::on_ztbtn_clicked() {//调用QFontDia…

《C++ Primer》第2章 变量(一)

参考资料: 《C Primer》第5版《C Primer 习题集》第5版 2.1 基本内置类型(P30) C 定义的基本类型包括算术类型(arithmetic type)和空类型(void),其中算术类型包括字符、整型、布尔…