索引与书架、新华字典的爱恨情仇

在MySQL的索引世界中,性能优化一直是开发者们关注的焦点。而索引,作为提升查询速度的关键技术之一,是非常重要的。索引根据存储类型可以分为聚簇索引(聚集)与非聚簇索引(非聚集),它们决定了数据在磁盘上的存储方式和查询时的访问路径。本文将带你深入了解这两种索引类型,用最简单的语言解释它们的工作原理和应用场景。

聚簇索引:

想象一下,你有一个书架,上面按照书名的字母顺序排列了所有的书籍。当你想找到某本书时,你只需要按照字母顺序查找,很快就能找到。这个书架就相当于数据库中的聚簇索引。

在聚簇索引中,数据实际上就是按照索引的顺序存储在磁盘上的。也就是主键与数据在一起并存储在磁盘上。类似书本就是数据、书名类似主键,它们在一起并放置在书架上。当然这里的主键更准确应该是书的编号。

工作原理

聚集索引的叶子节点直接存储表的实际数据行,也就是数据行的物理存储顺序与索引的逻辑顺序是一致的。因此,当你通过主键进行查询时,MySQL可以直接定位到数据行所在的物理位置,大大提高了查询效率。

  1. 关键字(Keys):用于维护树中数据顺序的标识符。
  2. 子节点指针(Child Pointers):指针指向节点的子节点。在B+树中,每个非叶子节点的子节点指针数量总是比关键字的数量多一个。

非聚簇索引:

再想象一下,你有一个目录,类似的里面记录了书架上每本书的位置哪一排、哪一层。当你想找到某本书时,你先查找目录,找到书的实际位置,然后去书架上取书。这个笔记本就相当于数据库中的非聚簇索引。

其实还有个例子也非常形象,就是新华字典。

新华字典是按照拼音或部首来组织汉字的,每个字都有一个对应的索引项,告诉你这个字在字典中的具体页码。当你想要查找一个字时,你可以先查看字典的目录,找到这个字的页码,然后直接翻到那一页查找。在这个过程中,索引项并不包含字的完整解释,只是提供了一个指向字典正文中字的位置的“指针”。

在MySQL中,非聚簇索引就是这样的“新华字典”,它的叶子节点存储的是索引列的值和对应数据行的指针,而不是数据行本身。

工作原理

非聚集索引的叶子节点不直接存储数据行,而是存储索引键值和指向数据行位置的逻辑指针。当你通过非聚簇索引进行查询时,MySQL首先在索引中找到匹配的索引项,然后根据索引项中的指针去数据表中获取完整的数据行。这个过程通常被称为“回表”。

MySQL是如何实现聚簇/非聚簇索引的?

存储引擎

聚簇索引和非聚簇索引的实现依赖于存储引擎。不同的存储引擎有不同的实现方式。最常用的存储引擎是InnoDB和MyISAM,它们分别实现了聚簇索引和非聚簇索引。当然除了最常用的存储引擎外MySQL还支持其它的存储引擎。

数据结构

  • InnoDB存储引擎

InnoDB是MySQL默认的存储引擎之一,它使用B+树作为索引结构。InnoDB的聚簇索引(Clustered Index)实际上是表数据本身,它的叶节点包含了行数据。

  • MyISAM存储引擎

MyISAM是MySQL的另一个存储引擎,它同样使用B+树作为索引结构。MyISAM的索引文件和数据文件是分开的,索引仅包含指向数据的指针。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/30342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HANA 自动生成年月维度,指定起始即可生成

官方指导文档:SERIES_GENERATE Function (Series Data) | SAP Help Portal select * from SERIES_GENERATE_DATE(INTERVAL 1 MONTH, 2024-01-01, 2024-12-01) 以下示例生成范围从1999-01-01到1999-01-02的一系列时间戳,该时间戳以30秒的间隔递增&#…

重生之 SpringBoot3 入门保姆级学习(24、场景整合 kafka 消息发送服务)

重生之 SpringBoot3 入门保姆级学习(24、场景整合 kafka 消息发送服务) 6.4 消息发送服务 6.4 消息发送服务 访问 kafka-ui (注意这里需要换成你自己的服务器或者虚拟机的 IP 地址,虚拟机可以用局域网 192.168.xxx.xxx 的地址&…

引领未来建筑潮流:轻空间设计团队打造“淄博珍珠”

作为国内单体最大的气膜会展场馆,“淄博珍珠”自四年前启用以来,已成为淄博市的重要地标和经济引擎。该场馆首次亮相于第二十届中国(淄博)国际陶瓷博览会,凭借其独特的设计和先进的建筑理念,吸引了社会各界…

机器人、人工智能相关领域 news/events (专栏目录)

Some Insights 一些机器人、人工智能或相关领域的news、events等 专栏直达链接 1. 智能制造 - 你需要了解的 10 个基本要素 2. 现实世界中的人工智能:工业制造的 4 个成功案例研究 3. 企业使用人工智能情况调查 4. 未来工厂中的人工智能:人工智能加…

A comprehensive review of machine learning-based models for fake news detection

Abstract 互联网在假新闻传播中的作用使其成为一个严重的问题,需要复杂的技术来自动检测。为了应对 Facebook、Twitter、Instagram 和 WhatsApp 等社交媒体网站上误导性材料的快速传播,本研究探索了深度学习方法和各种分类策略领域。该研究特别调查了基…

Linux安装kvm虚拟机

kvm是基于内核的虚拟机,为什么要用kvm不用vmware、virtual box… 只有一个原因,它非常快!本机使用linux开发也是因为它快!linux在老电脑上都能流畅运行,更别说现代电脑,如果你觉得装Linux并没有比win快多少…

一文带你搞定Linux开发环境配置

Linux开发必备 万事先更新 sudo apt update && sudo apt upgrade安装gcc工具链 sudo apt install build-essential像mysql、nacos等等建议装docker里,数据挂载到宿主机,日志别挂,直接装本机哪天日志塞满了就要开始重装系统了 以下…

SpringCloud Alibaba Sentinel基础入门与安装

GitHub地址:https://github.com/alibaba/Sentinel 中文文档:https://sentinelguard.io/zh-cn/docs/introduction.html 下载地址:https://github.com/alibaba/Sentinel/releases Spring Cloud Alibaba 官方说明文档:Spring Clou…

商淘云:服装实体店引流会员营销方案

服装零售实体店面临着越来越大的挑战,尤其是在吸引和保持忠诚顾客方面。为了应对这一挑战,制定一套有效的引流会员营销方案显得尤为重要。商淘云将探讨如何通过创新的营销策略和增强的顾客体验,提升实体店的会员数量和销售业绩,从…

浪潮信息内存故障预警技术再升级 服务器稳定性再获提升

浪潮信息近日对其内存故障智能预警修复技术进行了全面升级,再次取得技术突破。此次升级后,公司服务器的宕机率实现了80%锐降,再次彰显了浪潮信息在服务器技术领域的卓越能力。 浪潮信息全新升级服务器内存故障智能预警修复技术MUPR (Memory …

2024年6月15日 (周六) 叶子游戏新闻

期刊杂志: 聚合读者、意林、知音、故事会、花火以及国内各大知名报纸电子版,无需付费即可观看各种免费资源 中医自学宝典: 集合了中医医案,医经,方剂 药材知识的app,更方便的免费学习中医知识 《赛博朋克2077》被取消DLC泄露&…

告别盲目决策!精益生产KPI指标管理系统让你的企业更聪明

在当今快速变化的商业环境中,企业为了保持竞争力,需要高效地追踪、分析和优化各种业务指标。为了实现这一目标,越来越多的企业开始引入指标管理系统,这一工具在提升管理效率和促进业务增长方面发挥着至关重要的作用。 一、什么是…

Neo4j 创建关系

Neo4j 创建关系 在 Noe4j 中,关系是我们用来连接图的两个节点的元素。 这些关系具有数据的方向、类型和形式模式。 本章教你如何 建立关系在现有节点之间创建关系使用标签和属性创建关系 建立关系 我们可以使用 CREATE 子句创建关系。 我们将在方括号[]中指定关系…

代理模式(静态代理/动态代理)

代理模式(Proxy Pattern) 一 定义 为其他对象提供一种代理,以控制对这个对象的访问。 代理对象在客户端和目标对象之间起到了中介作用,起到保护或增强目标对象的作用。 属于结构型设计模式。 代理模式分为静态代理和动态代理。…

中国首例!「DataKit」上架亚马逊云科技 Marketplace add-ons

在 2022 年的 re:Invent 大会上,亚马逊云科技宣布了一项重大更新:亚马逊云科技 Marketplace 为 Amazon Elastic Kubernetes Service(Amazon EKS)提供了附加组件的支持。这一创新功能极大地丰富了 EKS 的生态系统,使用户…

StarkNet System Architecture 系统架构

文章目录 Starknet架构排序器,证明器和节点、验证者、Starnet Core排序器 Sequencer证明器 Prover节点验证者StarkNet Core工作原理TransactionsStarknet架构 原文链接: https://david-barreto.com/starknets-architecture-review/#more-4602 StarkNet 有五个组成部分。分别…

从钉钉到跨境电商领域的技术演变,HHO如何通过NineData实现全球化业务布局

两氢一氧(HHO)是一家跨境出海电商平台,专注于通过数字化手段连接全球市场和中国优质供应链,致力于打造数字化时代的全球化新品牌。 创始人陈航,曾任钉钉 CEO 并成功打造行业领先的亿级活跃用户产品--钉钉。离开阿里后创…

CityEngine记录1:工程目录

CityEngine的工程目录结构对于理解和组织3D城市建模项目至关重要。以下是对CityEngine工程目录结构的详细解析: Assets: 存放模型的零件与纹理图片。这些资产通常用于在建模过程中为建筑物、道路、植被等元素添加详细的纹理和细节。 Data: …

无问芯穹Qllm-Eval:制作多模型、多参数、多维度的量化方案

前言 近年来,大语言模型(Large Models, LLMs)受到学术界和工业界的广泛关注,得益于其在各种语言生成任务上的出色表现,大语言模型推动了各种人工智能应用(例如ChatGPT、Copilot等)的发展。然而…

【紫光同创盘古PGX-Nano教程】——(盘古PGX-Nano开发板/PG2L50H_MBG324第十一章)模拟波形实验例程说明

本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处(www.meyesemi.com) 适用于板卡型号: 紫光同创PG2L50H_MBG324开发平台(盘古PGX-Nano) 一:…