iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中索引类型的实现原理是什么
  • 803
分享到

MySQL中索引类型的实现原理是什么

2024-04-02 19:04:59 803人浏览 独家记忆
摘要

本篇文章给大家分享的是有关Mysql中索引类型的实现原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  一、按表列属性分类:  1.单

本篇文章给大家分享的是有关Mysql索引类型的实现原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

  一、按表列属性分类:

  1.单列索引

  以表的单个列字段创建的索引

  2.联合索引

  以表的多个列字段组合创建的索引,在查询条件使用索引的从左字段顺序才会生效,遵循最左匹配原则。

  单列索引和联合索引又包括:

  普通索引

  非主键,非唯一列的索引

  主键索引

  基于该表主键自动生成成的索引,如果未给表定义主键,会查找该表中是否存在非空、整形、唯一索引作为其主键(可通过select _rowid from 表名查看),若都不满足会隐式生成一个rowid作为主键(无法直接查到)

  唯一索引

  基于表的唯一列生成的索引,允许为空值

  全文索引

  将存储于数据库中的整本书或整篇文章中任意内容信息查找出来,如大量级的文字中如like %关键字%,普通索引的效率与全文索引相比是非常低的。

  二、按数据结构分类:

  1.B+tree索引

  b+tree基于平衡二叉树的一种多路平衡查找树,所有记录都按照顺序存放在叶子节点中,各个叶子节点直接通过链表相连。与b树不同的是:

  非叶子节点只存储键值信息。

  所有叶子节点之间都有一个链指针。

  数据记录都存放在叶子节点中。

  2.hash索引

  基于hash表结构实现的索引,mysql中只有MEMORY/HEAP和NDB存储引擎支持;

  InnoDB引擎支持自适应hash索引,但是是数据库自身创建使用的,而不能进行人为定义。当二级索引被频繁的访问时,便会自动创建自适应哈希索引;

  通过 命令SHOW ENGINE INNODB STATUS可查看自适应hash索引的使用情况;

  通过 命令SHOW VARIABLES LIKE '%ap%hash_index' 查看是否打开自适应hash索引。

  对比:

  由于hash索引是比较其hash值,hash索引只能进行等值查找而不能进行范围查找

  hash索引无法进行排序:原因同上

  不支持最左匹配原则,复合索引时合并一起计算hash值

  hash索引的检索效率很高可以一次定位,但是当发生大量hash碰撞的时候,链表变长,hash索引效率上是不如b+tree的

  由于存在hash碰撞的问题,当需要获得总数时候,hash 索引在任何时候都不能避免表扫描

  3.T-tree索引无锡人流医院哪家好 Http://www.wxbhnkyy120.com/

  4.R-tree索引

  三、按存储结构分类:

  1.聚簇索引(聚集索引)

  InnoDB的聚簇索引实际上是在同一个BTree结构中同时存储了索引和整行数据,通过该索引查询可以直接获取查询数据行。

  聚簇索引不是一种单独的索引类型,而是一种数据的存储方式,聚簇索引的顺序,就是数据在硬盘上的物理顺序。

  在mysql通常聚簇索引是主键的同义词,每张表只包含一个聚簇索引(其他数据库不一定)。

  2.辅助索引(非聚集索引,次级索引,二级索引)

  非聚集索引在BTree的叶子节点中保存了索引列和主键。如果查询列不在该索引内,只能查到其主键值,还需要回表操作查询聚簇索引进行查询。

  聚簇索引的优点:

  可以把相关数据保存在一起,如:实现电子邮箱时,可以根据用户ID来聚集数据,这样只需要从磁盘读取少量的数据页就能获取某个用户全部邮件,如果没有使用聚集索引,则每封邮件都可能导致一次磁盘io

  数据访问更快,聚集索引将索引和数据保存在同一个btree中,因此从聚集索引中获取数据通常比在非聚集索引中查找要快

  使用覆盖索引扫描的查询可以直接使用页节点中的主键值

  聚簇索引的缺点:

  聚簇数据最大限度地提高了IO密集型应用的性能,但如果数据全部放在内存中,则访问的顺序就没有那么重要了,聚集索引也没有什么优势了

  插入速度严重依赖于插入顺序,按照主键的顺序插入是加载数据到innodb表中速度最快的方式,但如果不是按照主键顺序加载数据,那么在加载完成后最好使用optimize table命令重新组织一下表

  更新聚集索引列的代价很高,因为会强制innodb将每个被更新的行移动到新的位置

  基于聚集索引的表在插入新行,或者主键被更新导致需要移动行的时候,可能面临页分裂的问题,当行的主键值要求必须将这一行插入到某个已满的页中时,存储引擎会将该页分裂成两个页面来容纳该行,这就是一次页分裂操作,页分裂会导致表占用更多的磁盘空间

  聚集索引可能导致全表扫描变慢,尤其是行比较稀疏,或者由于页分裂导致数据存储不连续的时候

  二级索引可能比想象的更大,因为在二级索引的叶子节点包含了引用行的主键列。

  二级索引访问需要两次索引查找,而不是一次

以上就是MySQL中索引类型的实现原理是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中索引类型的实现原理是什么

本文链接: https://www.lsjlt.com/news/58623.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中索引类型的实现原理是什么
    本篇文章给大家分享的是有关MySQL中索引类型的实现原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  一、按表列属性分类:  1.单...
    99+
    2024-04-02
  • MySQL索引的实现原理是什么
    MySQL的索引实现原理主要基于B+树结构。B+树是一种多路平衡查找树,它的每个节点可以存储多个键值对,并且所有叶子节点通过指针连接...
    99+
    2023-08-15
    MySQL
  • mysql中索引类型是什么
    这篇文章给大家分享的是有关mysql中索引类型是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、索引类型主键索引只能作用于一个字段(列),字段值不能是null,也不能重复。唯一索引只能作用于一个字段,字段值...
    99+
    2023-06-15
  • MySQL中索引的底层实现原理是什么
    本篇文章为大家展示了MySQL中索引的底层实现原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  MySQL索引底层实现原理  MySQL官方对索引的定义为...
    99+
    2024-04-02
  • MySQL索引的底层实现原理是什么
    这篇文章主要介绍MySQL索引的底层实现原理是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQL索引的底层实现原理1、Hash索引2、BTree索引和B+Tree索引3、全...
    99+
    2024-04-02
  • MySQL中索引的原理是什么
    这期内容当中小编将会给大家带来有关MySQL中索引的原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。索引目的索引的目的在于提高查询效率,可以类比字典,如果要查“m...
    99+
    2024-04-02
  • mysql全文索引实现的原理是什么
    MySQL全文索引实现的原理主要是利用倒排索引和自然语言处理技术。具体步骤如下: 创建全文索引:在创建表时,可以为需要进行全文检...
    99+
    2024-04-18
    mysql
  • MySQL中索引类型的作用是什么
    这篇文章给大家介绍MySQL中索引类型的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言:MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL...
    99+
    2024-04-02
  • MySQL的索引原理是什么
    本篇内容介绍了“MySQL的索引原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、索引的本质索引...
    99+
    2024-04-02
  • MySQL索引的原理是什么
    本篇内容介绍了“MySQL索引的原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!索引,可能让好很多...
    99+
    2024-04-02
  • MySQL索引原理是什么
    这篇文章主要介绍MySQL索引原理是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!摘要: 就一起来聊一聊MySQL索引。 什么是索引? 百度百科是这样描述的: 索引是为来加速对表...
    99+
    2024-04-02
  • MySQL中 Innodb索引的原理是什么
    本篇文章给大家分享的是有关MySQL中 Innodb索引的原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。什么是索引?索引(index...
    99+
    2024-04-02
  • mysql中btree索引的原理是什么
    B-tree索引是一种常用的数据库索引结构,用于加快数据的查找速度。其原理如下: B-tree是一种平衡多路搜索树,每个节点可以...
    99+
    2024-04-09
    mysql
  • mysql的索引底层之实现原理是什么
    这篇文章主要介绍了mysql的索引底层之实现原理是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。MySQL索引背后的数据结构及算法原理一、定...
    99+
    2024-04-02
  • mysql中innodb索引原理是什么
    这篇文章主要介绍了mysql中innodb索引原理是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。聚集索引(clustered index)...
    99+
    2024-04-02
  • mongodb索引的实现原理是什么
    MongoDB使用B树(B-tree)索引来实现索引功能。B树是一种多叉树结构,每个节点可以有多个子节点。在B树中,所有节点都按照大...
    99+
    2024-04-10
    mongodb
  • mysql中索引有什么类型
    这篇文章主要介绍mysql中索引有什么类型,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQL目前主要有的索引类型为:普通索引、唯一索引、主键索引、组合索引、全文索引。下面本篇文...
    99+
    2024-04-02
  • mysql索引的工作原理是什么
    本篇内容介绍了“mysql索引的工作原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  索引的工作...
    99+
    2024-04-02
  • mysql索引机制的原理是什么
    MySQL索引机制的原理是通过在数据表中创建索引,可以提高查询的效率。索引是一种数据结构,类似于书的目录,可以加快查询速度。当数据库...
    99+
    2024-04-09
    mysql
  • MySQL索引失效的原理是什么
    这篇文章主要讲解了“MySQL索引失效的原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL索引失效的原理是什么”吧!1、索引失效原因首先看看哪些情况下,将会导致查找不能利用索...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作