热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Mysql索引结构

索引含义:就是为了高效查询数据而排好序的数据机构。索引是存储在文件里的。比如对数据库的某张表的某个字段进行where查询,在没有添加索引的情况下&#x

索引含义:就是为了高效查询数据而排好序的数据机构。索引是存储在文件里的。

比如对数据库的某张表的某个字段进行where查询,在没有添加索引的情况下,是从第一行数据顺序往下查找的,比如数据是在第一百行,那么就需要对比一百行数据才能找到,如果添加索引,例如二叉树,那么理想情况下只需要对比大概六次就可以找到,效率会提高很多。

索引结构介绍:
1,二叉树
二叉树相比顺序查找更高效,它根据和父节点进行比较,判断是左侧还是右侧来查找,直到找到目标元素。但是由于建数据库时,大多会选择自增性主键,那么会造成索引值会一直添加到二叉树的右侧,从而失去二叉树的查找高效性。
2,红黑树
红黑树结构也叫平衡二叉树,它继承了二叉树的优点,而且解决了二叉树单侧递增的缺点。红黑树结构通过左旋和右旋进行自身结构调整,从而达到 左节点数<父节点数<右侧节点数。
同样红黑树也存在一个缺点,就是数据量增加,红黑树的高度会越来越大,可能会超过十几甚至二十几层,这对磁盘寻址很不利,从而导致查询效率越来越低下。
3,hash
hash结构对于精确查找可以说是非常高效的,它是通过把数据进行hash散列运算的结果作为文件指针存到索引文件中, 查找时通过文件指针可以快速定位到文件数据。
但是hash索引虽然对精准查找非常高效,但是真实环境很多都是匹配查询,hash索引无法解决范围查询。
4,B-Tree
B-Tree结构在红黑树的结构上做了优化,每个节点可以存储多个索引值,降低了树的高度,当然查询的效率也会随之提高,但是范围查找同样会从父节点开始遍历,增加许多无效遍历。
5,B+Tree
B+Tree主要针对B-Tree做了优化,为了进一步提高查询效率,和更好的范围查询,B+Tree的飞叶子节点中只存储索引值,并不存储数据,这样每个数据页(操作系统存储数据的最小单位,大概4
kb大小)就可以存储更多的索引值,增大了查询命中率,而所有的数据信息全存储在叶子节点中,同时叶子节点会有双向指针连接,当进行范围查询时,可以通过叶子节点的指针进行横向查询,避免了从父节点重新遍历,提高了查询效率。
参考链接


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • Navicat Premium 15 安装指南及数据库连接配置
    本文详细介绍 Navicat Premium 15 的安装步骤及其对多种数据库(如 MySQL 和 Oracle)的支持,帮助用户顺利完成软件的安装与激活。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • Windows 系统下 MySQL 8.0.11 的安装与配置
    本文详细介绍了在 Windows 操作系统中安装和配置 MySQL 8.0.11 的步骤,包括环境准备、安装过程以及后续配置,帮助用户顺利完成数据库的部署。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文详细介绍如何下载并安装MySQL数据库(5.7.10版本),以及配置Navicat管理工具(免费版)。通过本指南,您将了解从下载到安装的完整流程,并掌握基本的数据库管理技能。 ... [详细]
author-avatar
平凡王子轶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有