我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL中MyISAM存储引擎的非聚簇索引分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL中MyISAM存储引擎的非聚簇索引分析

本文小编为大家详细介绍“MySQL中MyISAM存储引擎的非聚簇索引分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL中MyISAM存储引擎的非聚簇索引分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

在InnoDB中索引即数据,也就是聚簇索引的那颗B+树的叶子节点中已经包含了所有完整的用户记录。MyISAM的索引方案虽然也是使用树形结构,但是却将索引和数据分开存储,这种索引也叫非聚簇索引。

create table index_demo(c1 int,c2 int,c3 char(1),primary key(c1)) ROW_FORMAT=COMPACT;

将表中的记录按照记录的插入顺序单独存储在一个文件中,这个文件并不划分为若干个数据页,有多少记录就往这个文件中塞多少个记录,这样一来,我们就可以通过行号快速访问到一条记录。在表中使用MyISAM作为存储引擎时,它的记录在存储空间中的表示如图:

MySQL中MyISAM存储引擎的非聚簇索引分析

由于在插入数据时并没有刻意按照主键大小排序,所以我们不能再这些数据上使用二分法进行查找,使用MyISAM存储引擎的表会把索引信息单独存储在另外一个文件中,称为索引文件。MyISAM会为表的主键单独创建一个索引,只不过在索引的叶子节点中存储的不是完整的用户记录,而是主键值和行号的组合。也就是先通过索引找到对应的行号,再通过行号去找对应的记录。

MySQL中MyISAM存储引擎的非聚簇索引分析

在InnoDB存储引擎中,我们只需要根据主键值对聚簇索引进行一次查找就能找到对应的记录;在MyISAM存储引擎中,需要进行一次回表操作,这也意味着MyISAM中建立的索引相当于全部都是二级索引。

MyISAM会直接在索引叶子节点处存储该条记录在数据文件中的地址偏移量。由此可以看出MyISAM的回表操作时十分快速的,因为它是拿着地址偏移量直接到文件中取数据,而InnoDB是通过获取主键之后再去聚簇索引中找记录,虽然说不慢,但是也比不上直接用地址去访问。

如果有必要,我们也可以为其他列分别建立索引或者建立联合索引,其原理与InnoDB中索引差不多,只不过在叶子节点处存储的是相应的列+行号,这些索引页全部都是二级索引。

MySQL中MyISAM存储引擎的非聚簇索引分析

可以看到对于非聚簇索引,不管是以主键为排序规则还是以非主键为排序规则,它的结构都是相同的,即叶子节点存放的都是相应的列+行号。

读到这里,这篇“MySQL中MyISAM存储引擎的非聚簇索引分析”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL中MyISAM存储引擎的非聚簇索引分析

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

下载Word文档

猜你喜欢

MySQL中MyISAM存储引擎的非聚簇索引分析

本文小编为大家详细介绍“MySQL中MyISAM存储引擎的非聚簇索引分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL中MyISAM存储引擎的非聚簇索引分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧
2023-06-29

MySQL中聚簇索引与非聚簇索引的实现

目录基本概念和作用说明聚簇索引非聚簇索引示例一:创建索引示例二:索引的选择示例三:索引的维护示例四:索引与性能http://www.lsjlt.com优化示例五:索引的限制结论与讨论引发点在mysql数据库中,索引是提高查询性能的关键工具。
MySQL中聚簇索引与非聚簇索引的实现
2024-09-18

MySQL中的聚簇索引、非聚簇索引、联合索引和唯一索引是什么

今天小编给大家分享一下MySQL中的聚簇索引、非聚簇索引、联合索引和唯一索引是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下
2023-04-21

MySQL中的聚簇索引、非聚簇索引、联合索引和唯一索引详细介绍

目录一、索引类型二、聚簇索引和非聚簇索引三、覆盖索引四、联合索引最左前缀匹配原则索引下推五、唯一索引一、索引类型索引根据底层实现可分为B-Tree索引和哈希索引,大部分时候我们使用的都是B-Tree索引,因为它良好的性能和特性更适合于构建
2023-04-19

如何将MySQL中的MyISAM存储引擎转换为InnoDB存储引擎?

要将MyISAM引擎转换为InnoDB,我们可以使用ALTER命令。现在让我们借助引擎MyISAM 创建一个表。mysql> create table MyISAMToInnoDBDemo-> (-> id int,-> Name varc
2023-10-22

MySql中的存储引擎和索引

这篇文章主要介绍了MySql中的存储引擎和索引,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
2022-11-13

mysql中MyISAM存储引擎的特性是什么

这篇文章将为大家详细讲解有关mysql中MyISAM存储引擎的特性是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、加锁和并发将整个表加锁到特定行上。对已读的表在读时加共享锁,在写时加排它锁。支持并
2023-06-15

如何分析MySQL常见的两种存储引擎MyISAM与InnoDB

本篇文章为大家展示了如何分析MySQL常见的两种存储引擎MyISAM与InnoDB,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一 MyISAM1.1 MyISAM简介MyISAM是MySQL的默认
2023-06-19

Mysql Innodb存储引擎之索引与算法的示例分析

这篇文章将为大家详细讲解有关Mysql Innodb存储引擎之索引与算法的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、概述索引太少,查询效率低;索引太多程序性能受到影响,索引的使用应该贴合实
2023-06-29

mysql InnoDB存储引擎的示例分析

这篇文章主要介绍了mysql InnoDB存储引擎的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、概念InnoDB是MySQL默认的存储引擎,如果需要其不支持的特
2023-06-14

编程热搜

目录