MySQL底层索引

news2024/11/18 6:34:00

目录

         一、什么是索引?

         二、MySQL索引结构分析【MySQL底层采用的是B+Tree】

        1、为什么不使用二叉树?

        2、为什么不使用红黑树?

        3、为什么不使用Hash?

        4、B+Tree与B-Tree的区别?

三、MySQL数据库的表结构、索引、数据

       1、MyISAM和InnoDB区别?

       2、MySQL表的存储引擎为MyISAM:

      3、MyISAM存储引擎的查找过程:

      4、MySQL表的存储引擎为InnoDB:    

​      5、InnoDB存储引擎的查找过程:     

      6、聚簇索引与非聚簇索引的区别?


一、什么是索引?

         索引就是把无序的数据排列有序,便于查找。类似于字典的目录(按照字母查找、偏旁查找。比作:不同的索引类型)

 二、MySQL索引结构分析【MySQL底层采用的是B+Tree】

        1、为什么不使用二叉树?

                比如:一组自增的数据(1、2、3、4、5、6、7),二叉树会形成一个链表的形式,比如查找5,就需要进行5次I/O,并不会提高查询效率。

 

        2、为什么不使用红黑树?

                红黑树就是比二叉树多了平衡,红黑树有称:二叉平衡树。 查询效率稍微比二叉树快。

 

        3、为什么不使用Hash?

                等值查找快,但无法进行范围查询。select * from student where age > 10;

        4、B+Tree与B-Tree的区别?

               1、B+Tree的叶子节点之间是有指针连接的,B-Tree没有。

               2、B+Tree的非叶子节点只存储索引,不存储数据;叶子节点存储索引和数据。

               3、B+Tree的节点有冗余的索引值,B+Tree支持随机检索和顺序检索;B-Tree只适合随机检索。

 

 

三、MySQL数据库的表结构、索引、数据

      常见的MySQL存储引擎有MyISAM和InnoDB(更多可以用SHOW ENGINES命令查看)。

       1、MyISAM和InnoDB区别?

                1、InnoDB支持事务、提供了行级锁(支持表锁,默认是行锁)和外键的约束。

                2、MyISAM不支持事务、行锁、外键。

                3、MyISAM的表结构(存放frm文件中)、索引(存放MYI文件中)、数据(存放MYD文件中);InnoDB表结构(存放frm文件中)、索引和数据(存放idb文件中)。

       2、MySQL表的存储引擎为MyISAM:

                1、frm文件存放表结构;

                2、MYD文件存放表中的数据;

                3、MYI文件存放表的索引。

      3、MyISAM存储引擎的查找过程:

         1、将B+Tree的索引节点load到内存,进行比较查找;

         2、最后在叶子节点找到对应的索引值,而索引的data存放的是:索引所在数据行的磁盘文件指针;根据该指针,把数据从数据表中查询出来即可。(该过程查找了2个文件,一个MYI文件,一个MYD文件;相比InnoDB多了一个磁盘IO。)

     4、MySQL表的存储引擎为InnoDB:    

        1、frm文件存储表结构;

        2、idb文件存储索引和数据。

     

     5、InnoDB存储引擎的查找过程:     

         1、将B+Tree的索引节点load到内存,进行比较查找;

         2、最后在树的叶子节点找到与之对应的索引值,而索引的data存放的是:索引对应行的数据;该过程只查找了1个文件,ibd文件,相比MyISAM存储引擎少了一次磁盘IO)。

     6、聚簇索引与非聚簇索引的区别?

               1、InnoDB的主键索引就是聚集索引,叶子节点包含了完整的数据记录,数据和索引存储在同一个文件(聚簇索引:将数据和索引放在一起,找到索引也就找到了数据。)

                2、MyISAM的主键索引就是非聚集索引,索引存储在MYI文件,数据存储在MYD文件。

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

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

相关文章

基于Sharfetter-Gummel和改进的Sharfetter-Gummel计算对流扩散方程的通量(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

1. Arthas的命令

万恶淫为首,百善孝为先 Arthas命令 可以查看相应的文档: https://arthas.aliyun.com/doc/命令.html 如: https://arthas.aliyun.com/doc/grep.html https://arthas.aliyun.com/doc/cat.html 基础命令 help 查看命令帮助信息 cat 查看当前arthas 系统中的任意文件…

【算法】八月算法打卡

2022-08-01 低配版 promise class MyPromise {constructor(executor) {// 成功回调队列this._resolveQueue [];// 失败回调队列this._rejectQueue [];let resolve (val) > {while (this._resolveQueue.length) {const callback this._resolveQueue.shift();callback(v…

【iOS】对象,消息,运行期

文章目录对象,消息,运行期属性属性特质原子性方法名在对象内部尽量直接访问实例变量对象等同性特定类所具有的等同性判断等同性判定的执行深度容器中可变类的等同性以“类族模式”隐藏实现细节创建类族Cocoa里的类族在既有类中使用关联对象存放自定义数据…

原型,原型链,原型的继承

原型的作用? 1.节省内存空间 2.实现数据共享(继承) 什么是原型? 任何一个函数都有propotype属性,它本身是一个对象,我们称之为原型 构造函数,实例化对象与原型之间的关系? 1.任何一个函数都有prototype属性,它本身是一个对象,我们称之为原型 2.构造函数也是函数,也都…

C语言中头文件(.h)编写,头文件的包含<>和““很大不同

头文件书写技巧 1、头文件主要作用&#xff0c;提前声明函数&#xff0c;因为在c语言中必须先声明或定义才能使用 2、在使用到.c文件中需要把这个.h文件进行包含格式是#include <h文件>或#include "h文件名"&#xff0c;但**强烈建议用引号**&#xff0c;尖括…

【码极客精讲】do while语句

上次讲了while语句&#xff0c;这次讲一下do while语句。 do...while 循环是 while 循环的变体。在检查while()条件是否为真之前&#xff0c;该循环首先会执行一次do{}之内的语句&#xff0c;然后在while()内检查条件是否为真&#xff0c;如果条件为真的话&#xff0c;就会重复…

binder调用流程分析

binder是一个非常好的跨进程通信工具&#xff0c;Android对其进行了各种封装&#xff0c;虽然我们用起来简单&#xff0c;但是理解起来却比较困难。 1.自己设计一个跨进程通信机制 在理解binder之前呢&#xff0c;首先我们想一下&#xff0c;如果我们自己设计一个跨进程通信的…

关于树形dp问题的解决

文章目录解决套路案例展示一、二叉树的最大深度二、判断是不是平衡二叉树三、判断是不是二叉搜索树四、判断是否是满二叉树五、二叉树节点间的最大距离六、派对的最大快乐值解决套路 实际上就是设计一个递归函数&#xff0c;该递归函数一定要包含 basecase&#xff0c;即让函数…

[附源码]Python计算机毕业设计高校选课系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等…

[附源码]Python计算机毕业设计共享自习室管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等…

【C++】STL-string的使用

文章目录1.为什么学习string类&#xff1f;1.1 C语言中的字符串OJ题目1&#xff1a;字符串相加2.标准库中的string类2.1 string类(了解)总结&#xff1a;2.2 string类的常用接口说明1. string类对象的常见构造2.string类对象的容量操作max_sizereserve和resize3. string类对象的…

Spirng 痛苦源码学习(三)——Spring中的几个核心老大

文章目录前言一、基础接口1.Resource2.ResourceLoader3.BeanFactory&#xff08;1&#xff09;总览&#xff08;2&#xff09;继承如下&#xff08;3&#xff09;重要的工厂4. ApplicationContext前言 一开始学习spring我们首先还是要搞清楚他的整体架构&#xff0c;就是他是干…

[附源码]Node.js计算机毕业设计互联网教学平台Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

C++ Reference: Standard C++ Library reference: Containers: map: multimap: end

C官网参考链接&#xff1a;https://cplusplus.com/reference/map/multimap/end/ 公有成员函数 <map> std::multimap::end C98 iterator end(); const_iterator end() const; C11 iterator end() noexcept; const_iterator end() const noexcept;返回指向结束的iterator …

HTTP简介(GET,POST)

HTTP简介(GET,POST) 简介 HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff0c;规定了浏览器和服务器之间数据传输的规则。 演示 HTTP协议的特点 基于TCP协议: 面向连接&#xff0c;安全 TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于…

[附源码]Python计算机毕业设计SSM基于Java家庭财务管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

LeetCode 297. 二叉树的序列化与反序列化

今天早上睡起来刷了这么一道题&#xff0c;二叉树的序列化和反序列化 大概意思就是给你一个二叉树&#xff0c;把他转成一个字符串&#xff0c;中间的自定义规则由你定&#xff0c;再根据这个字符串去还原这个二叉树&#xff0c;这道题的话思路不难&#xff0c;写起来有的细节…

【云原生 | Kubernetes 实战】13、K8s 常见的存储方案及具体应用场景分析(上)

目录 K8s 持久化存储 一、k8s 持久化存储&#xff1a;emptyDir 二、k8s 持久化存储&#xff1a;hostPath 三、k8s 持久化存储&#xff1a;nfs 3.1 搭建 nfs 服务 3.2 创建Pod&#xff0c;挂载 NFS 共享出来的目录 3.3 测试 pod 挂载 nfs 是否成功 K8s 持久化存储 在 k8s…

[附源码]Nodejs计算机毕业设计基于框架的在线问答平台Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…