MySql支持哪些索引类型

技术MySql支持哪些索引类型这篇文章主要讲解了“MySql支持哪些索引类型”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySql支持哪些索引类型”吧!一、什么是索引?

本文主要解释“MySql支持哪些索引类型”。本文的解释简单明了,易学易懂。请跟随边肖的思路,一起研究学习“MySql支持哪些索引类型”!

一、什么是索引?

官方解释:Index是一种帮助MySQL高效获取数据的数据结构。

通俗理解:Index是一个特殊的文件(InnoDB数据表上的索引是表空间不可分割的一部分),其中包含指向数据表中所有记录的引用指针。

二、索引可以做什么?

首先,指数不是万能的,索引可以加快数据检索操作,但它会减缓数据修改操作。每次修改数据记录时,都必须刷新索引。为了在一定程度上弥补这个缺陷,很多SQL命令都有一个DELAY_KEY_WRITE项。此选项的功能是在每个新记录和每个现有记录被此命令修改后,暂时停止MySQL立即刷新索引。索引的刷新将等到插入/修改所有记录。当一个数据表中需要插入很多新记录时,DELAY_KEY_WRITE选项的作用会非常明显。

三、为什么使用数据索引能提高效率?

数据索引存储有序。

在有序的情况下,没有必要遍历索引记录来通过索引查询一条数据。

极端情况下,数据索引的查询效率为二分法查询效率,接近log2(N)。

四、MySQL支持哪些索引类型?

我们这里提到的索引类型不是指“主键索引”和“外键索引”,而是指索引底部的数据结构。MySQL的索引数据结构支持以下两种:

b树索引。b树是一种平衡的多分支树。根节点到每个叶节点的高度差小于1,同级节点之间用指针链接,有序,如下图所示:MySql支持哪些索引类型

哈希索引。索引是使用某种哈希算法将键值转换成新的哈希值。搜索时,不需要像B树那样从根节点到叶节点逐级搜索。您只需要一次哈希算法,这是无序的,如下图所示:MySql支持哪些索引类型

不支持范围查询。

不支持索引完成排序。

不支持联邦索引最左边的前缀匹配规则。

哈希索引的优点:等价查询和哈希索引有绝对的优势(前提是没有大量的重复键值,如果有大量的重复键值,哈希索引的效率很低,因为存在所谓的哈希冲突问题。)

当指数不适用时:

五、什么情况下应不建或少建索引?

我们都知道什么时候应该使用索引,那么什么时候不应该使用索引呢?就像我们上面说的,指数不是万能的,所以指数肯定有一些不适用的场景。在以下场景中,我们应该尽量不构建或构建较少的索引:

记录太少了。

频繁插入、删除和修改的表。

对于数据重复且平均分布的表字段,如果一个表有10万行记录,而有一个字段A只有T和F两个值,且每个值的分布概率约为50%,那么索引这个表A字段一般不会提高数据库的查询速度。

经常与主字段一起查询但主字段的索引值较多的表字段。

六、什么是联合索引?

联合索引是两列或多列上的索引。对于联邦索引,MySQL支持从左到右使用索引中的字段。查询只能使用索引的一部分,但只能使用最左边的部分。比如索引是关键索引(A、B、C),可以支持A、A、B、A、B、C三种组合进行搜索,但不能支持B、C,当最左边的字段是常量引用时,索引非常有效。

通过索引中的附加列,您可以缩小搜索范围,但是使用包含两列的索引不同于使用两个单独的索引。

综合指数的结构类似于电话簿,其中姓名由姓氏和名字组成。电话簿首先按姓氏对同名同姓的人进行排序,然后按名字对同名同姓的人进行排序。如果知道姓氏,电话簿会很有用;如果你知道名字和姓氏,电话簿更有用,但是如果你只知道名字而不知道姓氏,电话簿就没用了。

00-1010b磁盘读写成本更低。B的内部节点没有指向关闭。

键字具体信息的指针,因此其内部结点相对B树更小。如果把所有同一内部结点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多。一次性读入内存中的需要查找的关键字也就越多。相对来说IO读写次数也就降低了。

  • B+-tree的查询效率更加稳定。由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。

  • 感谢各位的阅读,以上就是“MySql支持哪些索引类型”的内容了,经过本文的学习后,相信大家对MySql支持哪些索引类型这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

    内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/133545.html

    (0)

    相关推荐

    • MySQL5.5基于CentOS6二进制包安装是怎么样的

      技术MySQL5.5基于CentOS6二进制包安装是怎么样的MySQL5.5基于CentOS6二进制包安装是怎么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易

      攻略 2021年10月25日
    • 被子里的螨虫咬后图片,被子里的螨虫会造成什么危害

      技术被子里的螨虫咬后图片,被子里的螨虫会造成什么危害1、诱发皮肤疾病——螨虫容易诱发皮肤疾病,因为螨虫的繁殖和生长需要吸取皮肤的营养成分,导致分泌物堵塞毛孔,从而使皮肤变得粗糙、角质逐渐变厚,因此诱发痤疮等多种皮肤病被子

      生活 2021年10月24日
    • PostgreSQL DBA常用SQL查询语句有哪些

      技术PostgreSQL DBA常用SQL查询语句有哪些本篇内容介绍了“PostgreSQL DBA常用SQL查询语句有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如

      攻略 2021年11月8日
    • python光学仿真面向对象光学元件类的实现是什么

      技术python光学仿真面向对象光学元件类的实现是什么python光学仿真面向对象光学元件类的实现是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能

      攻略 2021年10月20日
    • 12组-Alpha冲刺-4/6

      技术12组-Alpha冲刺-4/6 12组-Alpha冲刺-4/6侯钦凯过去两天完成了哪些任务
      完善UI界面,复习考试展示GitHub当日代码/文档签入记录接下来的计划复习考试,准备答辩还剩下哪些任务博

      礼包 2021年11月15日
    • ESP32读取串口传感器数据

      技术ESP32读取串口传感器数据 ESP32读取串口传感器数据最近拿到一个九轴陀螺仪传感器,如图:该设备通过串口方式输出九轴数据,可用官方自带得上位机或者是sscom看到数据,官网提供了很多例程,但唯独

      礼包 2021年12月9日