【MySQL高级】——索引数据结构

news2024/12/23 17:36:45

在这里插入图片描述

一、全表遍历

每个数据页一次加载搜索

二、Hash结构

1. Hash简介

在这里插入图片描述
在这里插入图片描述

2. 两种常见加快查找速度的数据结构

在这里插入图片描述

3. 为什么不采用Hash结构

 <1> Hash索引仅能满足=,!=和IN查询。如果进行范围查询,哈希型的索引,时间复杂度会退化为o(n);而树型的“有序”特性,依然能够保持O(log2N)的高效率。
 <2> Hash索引还有一个缺陷,数据的存储是没有顺序的,在ORDER BY的情况下,使用Hash索引还需要对数据重新排序。
 <3> 对于联合索引的情况,Hash值是将联合索引键合并后一起来计算的,无法对单独的一个键或者几个索引键进行查询。
 <4> 对于等值查询来说,通常Hash索引的效率更高,不过也存在一种情况,就是索引列的重复值如果很多,效率就会降低。这是因为遇到Hash冲突时,需要遍历桶中的行指针来进行比较,找到查询的关键字,非常耗时,所以Hash索引通常不会用到重复值比较多的列上,比如性别,年龄等。

4. 支持的存储引擎

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 自适应Hash索引

<1> 概述

在这里插入图片描述
在这里插入图片描述
采用自适应 Hash 索引目的是方便根据 SQL 的查询条件加速定位到叶子节点,特别是当 B+ 树比较深的时候,通过自适应 Hash索引可以明显提高数据的检索效率。

<2> 查看是否开启

show variables like '%adaptive_hash_index';

在这里插入图片描述

三、二叉搜索树

在这里插入图片描述

1. 二叉搜索树的特点

在这里插入图片描述

2. 查找规则

在这里插入图片描述

3. 存在问题

在这里插入图片描述
在这里插入图片描述

四、AVL树(平衡二叉树)

在这里插入图片描述
在这里插入图片描述
#五、B-Tree

1. 简介

在这里插入图片描述

2. 结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 特性

 <1> 根节点的儿子数的范围是 [2,M]。
 <2> 每个中间节点包含 k-1 个关键字和 k 个孩子,孩子的数量 = 关键字的数量 +1,k 的取值范围为[ceil(M/2), M]。ceil为向上取整
 <3> 叶子节点包括 k-1 个关键字(叶子节点没有孩子),k 的取值范围为 [ceil(M/2), M]。
 <4> 假设中间节点节点的关键字为:Key[1], Key[2], …, Key[k-1],且关键字按照升序排序,即 Key[i]<Key[i+1]。此时 k-1 个关键字相当于划分了 k 个范围,也就是对应着 k 个指针,即为:P[1], P[2], …,P[k],其中 P[1] 指向关键字小于 Key[1] 的子树,P[i] 指向关键字属于 (Key[i-1], Key[i]) 的子树,P[k]指向关键字大于 Key[k-1] 的子树。
 <5> 所有叶子节点位于同一层。
 <6> 非叶子节点既保存索引,也保存数据记录 。

4. 查找步骤

在这里插入图片描述

5. 与AVL树相比

<1> 与AVL树相比

B 树相比于平衡二叉树来说磁盘 I/O 操作要少 , 在数据查询中比平衡二叉树效率要高。所以 只要树的高度足够低,IO次数足够少,就可以提高查询性能 。

<2> 总结

在这里插入图片描述

六、B+Tree

1. 简介

在这里插入图片描述

2. B+Tree 与B-Tree的不同

 <1> 有 k 个孩子的节点就有 k 个关键字。也就是孩子数量 = 关键字数,而 B 树中,孩子数量 = 关键字数+1。
 <2> 非叶子节点的关键字也会同时存在在子节点中,并且是在子节点中所有关键字的最大(或最小)。
 <3> 非叶子节点仅用于索引,不保存数据记录,跟记录有关的信息都放在叶子节点中。而 B 树中, 非叶子节点既保存索引,也保存数据记录 。
 <4> 所有关键字都在叶子节点出现,叶子节点构成一个有序链表,而且叶子节点本身按照关键字的大小从小到大顺序链接。

3. B+Tree 相对B-Tree的改进

在这里插入图片描述
在这里插入图片描述

4. 思考题

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、算法的时间复杂度

在这里插入图片描述

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

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

相关文章

PLUS模型和InVEST模型生态系统服务多情景模拟预测、ArcGIS空间数据处理、空间分析与制图、土地利用时空变化

查看原文>>>基于”PLUS模型“生态系统服务多情景模拟预测实践技术应用 目录 第一章、理论基础与软件讲解 第二章、数据获取与制备 第三章、土地利用格局模拟 第四章、生态系统服务评估 第五章、时空变化及驱动机制分析 第六章、论文撰写技巧及案例分析 基于Ar…

B端产品如何搭建用户帮助体系

用户帮助体系可以提升用户的使用体验&#xff0c;引导用户正确的使用产品&#xff0c;并且体验产品的各个功能&#xff0c;B端产品因为其特殊的业务属性和复杂度&#xff0c;通常其学习成本不低。这些成本不仅仅体现在对于复杂业务概念及流程的认知方面&#xff0c;同时体现在整…

零信任网络安全:为什么越来越多的企业选择采用这一方法?

第一章&#xff1a;引言 随着信息化技术的发展和普及&#xff0c;网络安全问题日益严峻&#xff0c;黑客攻击、病毒感染、数据泄露等问题层出不穷&#xff0c;给企业带来了极大的损失。为了保障企业信息安全&#xff0c;企业采取了一系列安全措施&#xff0c;比如加强防火墙、…

【JavaScript】8.DOM的节点操作

DOM的节点操作 获取元素通常使用两种方式&#xff1a; 利用 DOM 提供的方法获取元素利用节点层级关系获取元素 利用 DOM 提供的方法获取元素 document.getElementById()document.getElementsByTagName()document.querySelector 等逻辑性不强、繁琐 利用节点层级关系获取元素 利…

vite中使用html2canvas 将img、svg和div转canvas

目录 div转canvas svg转canvas img转canvas div转canvas 使用 html2canvas 插件&#xff0c;其官网&#xff1a;html2canvas - Screenshots with JavaScripthttp://html2canvas.hertzen.com/ 安装html2canvas&#xff1a; npm i -S html2canvas 引入&#xff1a; import h…

zotero文献管理软件应用

文章目录 基础教学快速安装与入门第二部分&#xff0c;比较详细的教学与补充文献管理工具比较浏览器插件获取文献与文献pdfZotero 界面添加文件的其他方式管理题录在论文中插入引文文献同步插件与常见问题茉莉花PDFTranslator常见问题1.CNKI页面批量抓取题录失败2.文献类型标识…

Python入门教程+项目实战-11.4节: 元组与列表的区别

目录 11.4.1 不可变数据类型 11.4.2 可变数据类型 11.4.3 元组与列表的区别 11.4.4 知识要点 11.4.5 系统学习python 11.4.1 不可变数据类型 不可变数据类型是指不可以对该数据类型进行修改&#xff0c;即只读的数据类型。迄今为止学过的不可变数据类型有字符串&#xff…

leetcode 494. 目标和 (01 背包

。。最近背包问题做得好崩溃 这题的解法和 分割子集、石头 差不多 分成两个集合 &#xff08;注意这里计算的时候是不带上符号的&#xff0c;只是单纯的数字 a. 正号 的数字集合 P b. 负号 的数字集合 N 所以就有以下公式 sum&#xff08;P&#xff09; sum&#xff08;N&…

XGBoost学习总结

XGBoost有两种实现&#xff0c;原生版本和Sklearn版本 &#xff0c;我选的是sklearn的主要是都用sklearn方便 参数 参数表 class xgboost.XGBRegressor ( max_depth3, learning_rate0.1, n_estimators100, silentTrue, objectivereg:linear, boostergbtree, n_jobs1, nthre…

超简单有趣的模拟算法:元胞自动机(CA)原理简介与 matlab 代码实现

很久之前就就听说了元胞自动机&#xff08;cellular automata&#xff0c;CA&#xff09;&#xff0c;但是一直没有尝试。得知2023年美赛春季赛只有两道赛题的时候&#xff0c;怕考到这个&#xff0c;所以出一篇元胞自动机的博客&#xff0c;权且当一篇学习笔记。 尝试过后才发…

亚科转债,鹿山转债上市价格预测

亚科转债 基本信息 转债名称&#xff1a;亚科转债&#xff0c;评级&#xff1a;AA&#xff0c;发行规模&#xff1a;11.59亿元。 正股名称&#xff1a;亚太科技&#xff0c;今日收盘价&#xff1a;5.58元&#xff0c;转股价格&#xff1a;6.46元。 当前转股价值 转债面值 / 转…

SpringBoot搭建的方便易用、多租户、高颜值的教学管理平台

一、开源项目简介 硕果云&#xff0c;基于 Spring Boot 搭建的方便易用、高颜值的教学管理平台&#xff0c;提供多租户、权限管理、考试、练习、在线学习等功能。 主要功能为在线考试、练习、刷题&#xff0c;在线学习 课程内容支持图文、视频&#xff0c;考试类型支持考试、练…

vue可视化大屏

为什么要用 mapbox ? 各位可以自行搜索上面提到的或者其他的webGIS框架或者集成服务商&#xff0c;可以很轻松的比较出mapbox的优势&#xff1a; 支持3D地形、3D模型支持多种坐标系投影mapbox studio 在线编辑地图样式&#xff0c;使用时只需一个链接&#xff0c;更新时链接…

【一篇文章学会使用从暴力法=>记忆化搜索=>动态规划以及栈的多种方法来实现LeetCode 32题最长有效括号问题】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

数字IC入门教程

第一节课 linux命令 文件命令 man 查询指令的作用 如 man cd ls 列出当前文件和文件夹的名字&#xff08;list the directory and files&#xff09; ls -a 把隐藏的文件和文件夹也显示出来 &#xff08;list all&#xff09; ls -l 把文件的属性&#xff08;读写&…

如何设置ddns动态域名实现内网发布外网

在本地搭建好服务器&#xff0c;部署好web网站或其他应用后&#xff0c;需要设置动态域名服务ddns&#xff0c;将主机的内网IP端口映射到外网访问&#xff0c;才能实现在外网访问内网。今天小编就和大家分享一下内网发布外网方案&#xff0c;即如何设置ddns动态域名服务实现外网…

Docker compose 制作 LNMP 镜像

目录 第一章.Nginx镜像 1.1安装环境部署 1.2.nginx镜像容器的配置 第二章.php镜像的安装部署 2.1.文件配置 第三章.mysql镜像的安装部署 3.1.文件配置 第四章.配置网页 4.1.进入容器mysql 4.2.浏览器访问&#xff1a; 第一章.Nginx镜像 1.1安装环境部署 systemctl s…

十四、51单片机之AD转换

1、AD相关简介 1.1、什么是AD转换&#xff1f; (1)A是指analog、模拟的&#xff1b;D是指digital、数字的。 (2)现实世界是模拟的&#xff0c;连续分布的&#xff0c;无法被分成有限份&#xff1b;计算机世界是数字的&#xff0c;离散分布的&#xff0c;是可以被分成有限份的…

Springboot +Flowable,详细解释啥叫流程实例(二)

一.简介 上一篇中学习了Flowable 中的流程模板&#xff08;流程定义&#xff09;的部署问题&#xff0c;这一篇来学习什么叫流程实例。 部署之后的流程模板&#xff0c;还不能直接运行&#xff0c;例如我们部署了一个请假流程&#xff0c;现在 张三想要请假&#xff0c;他就需…

交叉小波变换(cross wavelet transform)是什么?

小波变换可以很好的在时频域中分析单个信号的瞬态和突变等时变特性&#xff0c;交叉小波变换是在小波变换的基础上提出的&#xff0c; 主要用来处理两个信号之间的相关程度。传统的互相关分析方法&#xff0c; 是通过傅里叶变换将信号从时域上转换到频域上&#xff0c;然后在频…