首页 > 数据库 >MySQL--索引

MySQL--索引

时间:2023-10-11 11:34:01浏览次数:447  
标签:Hash -- Tree 叶子 索引 MySQL

MySQL--索引

索引概述

索引是帮助MySQL高效获取数据的数据结构(有序)

image-20231011103450267

演示

使用全表扫描性能极低

使用二叉搜索树更高效

image-20231011103950059

优缺点

image-20231011104158051

索引结构

  • B+Tree索引
  • Hash索引
  • R-Tree(空间索引)
  • Full-text(全文索引)

image-20231011104425837

存储引擎支持情况

平常所说的索引都是指的B+树索引

image-20231011104616262

二叉树

image-20231011105056017

B-Tree(多路平衡查找树)

n个key就有n+1个指针

image-20231011105329357

演示过程

image-20231011110044205

数据结构可视化

B+树

所有元素都会出现在叶子结点

所有叶子结点通过单向链表相连

image-20231011110356003

演示过程

image-20231011110830902

Mysql当中的B+树

image-20231011110939379

Hash索引

image-20231011111706273

Hash索引特点

image-20231011111926305

思考题

为什么InnoDB存储引擎选择使用B+tree索引结构?

  • 相对于二叉树,层级更少,搜索效率高.

  • 对于B-tree,无论是叶子节点还是非叶子节点都会保存数据,这样导致一页中存储的键值减少,指针跟着减少,要同样保存大量数据,只能增加树的高度,导致性能降低.

  • 相对Hash索引,B+Tree支持范围匹配及排序操作.

标签:Hash,--,Tree,叶子,索引,MySQL
From: https://www.cnblogs.com/harper886/p/17756674.html

相关文章

  • 怎么在ubuntu系统里新建一个自己的账户
    前言为什么要新建个自己的账户,为了解决多人共用一台服务器别人误删误操作自己的资源,也有情况是当我自己占用了显卡别人也等着急用的时候,可以第一时间联系我商量着分配资源。 ## 具体操作步骤先切换root用户,然后新建自己的用户surootadduseryanmc先切换root用户,输入......
  • element 的 el-cascader 控件,去掉空子集
    后端返回的树结构数据: template:<el-cascaderv-model="ruleForm.columnAll":options="allColumnData":props="{value:'columnId',label:'columnName',children:'children'}"/> methods://获取......
  • vscode交叉编译cmake工程,toolchains设置
    在VisualStudioCode中编译CMake项目时,使用自定义工具链(toolchains)可以很有用,特别是当你需要交叉编译或使用不同的编译器时。以下是在VisualStudioCode中使用自定义工具链的一般步骤,以aarch64的嵌入式为例:创建自定义工具链文件:首先,你需要创建一个包含有关你的自定义工具链......
  • 中断某个用户的所有SSH连接
    使用pkill命令:如果你知道SSH会话的用户名,你可以使用pkill命令来中断该用户的所有SSH会话。例如,要中断用户名为username的所有SSH会话,可以运行以下命令:pkill-uusernamessh......
  • Qt_C++读写NFC标签Ntag支持windows国产linux操作系统
    本示例使用的发卡器:ntag2标签存储结构说明#include"mainwindow.h"#include"./ui_mainwindow.h"#include<QDebug>#include"QLibrary"#include"QMessageBox"//本示例可在windows、linux系统内编译、运行//判断windows、linux系统,声明动态库函数---------------......
  • Spring 源码分析(五)——Spring三级缓存的作用分别是什么?
    Spring的三级缓存是经典面试题,也会看到一些文章讲三级缓存与循环依赖之的关系。那么,三级缓存分别存储的什么呢?他们的作用又分别是什么?一、一、二级缓存一级缓存是一个名为singletonObjects的ConcurrentHashMap,用于存储已经创建完成的Bean。其作用也是最明显的,获取Bean时最优......
  • Quartz 体系结构
    Quartz的体系结构Quartz的重要组件Scheduler用于与调度程序交互的主程序接口。Scheduler调度程序-任务执行计划表,只有安排进执行计划的任务Job(通过scheduler.scheduleJob方法安排进执行计划),当它预先定义的执行时间到了的时候(任务触发trigger),该任务才会执行。Job我们预先定义的希......
  • Quartz 数据库怎么初始化
    如下initialize-schema设为always就会初始化表结构,首次运行以后要设回neverspring:application:name:${APPLICATION_NAME:nisbos-service-apm-www}profiles:active:dev#,eurekaautoconfigure:exclude:org.springframework.boot.autoconfigure.j......
  • 你说的玩偶呢(未完待续...)
    俗话说爱屋及乌,我也开始了解各种玩偶了,攻略了许多,肯定不是无所谓的攻略,这些都是白白的心爱小玩偶呀。迪士尼雪莉玫ShellieMay(白白没单独的图片,只能找个网图咯)2010年1月22日出生于东京迪士尼,她和达菲有着相似的外形,她也是达菲的第一个好朋友。雪莉玫乐观开朗,心灵手巧特点:长......
  • canvas绘制箭头
    <!DOCTYPEhtml><html><head><title>箭头</title><metacharset="utf-8"></head><bodystyle=""><canvasid="'myCanvas"width="1500"height="20......