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)

    相关推荐

    • base 关键字用法

      技术base 关键字用法 base 关键字用法base 关键字用于从派生类中访问基类的成员:调用基类上已被其他方法重写的方法。前半句实例:
      public class Person
      {
      protected

      礼包 2021年11月24日
    • JavaWeb学生成绩管理系统功能有哪些

      技术JavaWeb学生成绩管理系统功能有哪些小编给大家分享一下JavaWeb学生成绩管理系统功能有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一

      攻略 2021年11月23日
    • 如何配置Solr4.7的同义词

      技术Solr4.7的synonyms怎么配置这篇文章主要介绍“Solr4.7的synonyms怎么配置”,在日常操作中,相信很多人在Solr4.7的synonyms怎么配置问题上存在疑惑,小编查阅了各式资料,整理出简单好

      攻略 2021年12月22日
    • 如何进行数据库三大范式的分析

      技术如何进行数据库三大范式的分析这篇文章将为大家详细讲解有关如何进行数据库三大范式的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一: 引言 作为一个数据

      攻略 2021年12月2日
    • 抖音刷赞平台,花钱刷点赞会被限流吗?

      技术抖音刷赞平台,花钱刷点赞会被限流吗?抖音大伙都知道,是目前最火爆的短视频APP了。饭馆里,地铁上,火车上,全国各地的人们拿着手机,疯狂的刷刷刷,对着手机哈哈大笑,没错,这肯定是在刷抖音,抖音的火爆程度难以想象。抖音也

      测评 2021年11月11日
    • 如何进行ASP.NET Web开发框架中的查询

      技术如何进行ASP.NET Web开发框架中的查询本篇文章为大家展示了如何进行ASP.NET Web开发框架中的查询,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Enterpri

      攻略 2021年11月26日