当前位置: 首页 > news >正文

MySQL索引-2聚集索引探讨

本文目录

概述

innoDB中的索引

MyISAM中的索引

总结与开发经验


概述

  • 聚集索引不是一种索引类型,而是一种数据存储方式,表示数据以主键索引的顺序进行聚集存储

  • 【聚集】表示数据行和主键聚簇存储在一起,数据行在磁盘的排列和索引排序保持一致

  • innoDB中聚集索引根据表的主键构建一个B+树来组织数据,这个树的叶子节点直接存储行数据

不同存储引擎的索引方式不同,比如MyISAM中就没有使用聚集索引。

接下来,详细分析MySQL中innoDB与MyISAM存储引擎中数据组织形式与索引方式,从而进一步认识聚集索引的特点。

innoDB中的索引

设有如下数据表:

IDNAMECITY
5BobShanghai
8LeeBeijing
18SamWuhan
24RoseWuhan
40AlanNanjing
55HoboChengdu

innoDB的主键索引为聚集索引形式,示意图如下:

 

innoDB的主键索引中叶子节点存储的就是整个表的数据,可以说其主键索引文件与数据文件本质是同一个

在innoDB中,这种数据按照主键进行聚集的形式,叫做聚集索引。如果没有显示指定主键索引的话,MySQL会选取有非空且唯一约束的字段作为主键,如果这种字段也不存在,则自动创建一个隐藏字段作为主键,以确保数据可以按主键进行聚集。

而在innoDB中,辅助索引叶子节点存储的是主键值,如下图:

 

因此可以看出,通过辅助索引进行查询时,需要走两次索引:先走辅助索引获取主键,再走主键索引获取到数据。

MyISAM中的索引

在MyISAM同样存在主键索引和辅助索引,但是这两类索引本质并无区别,其叶子节点都是存储了数据的地址。示意如下:

 

所以说,MyISAM中的索引是非聚集的,即数据并不按照主键进行组织和聚集。

MyISAM中索引文件是独立于数据文件的,且通过主键索引和辅助索引查询数据的过程时一样的,这一点与innoDB不同。

总结与开发经验

  • 聚集索引并不是一种单独的索引类型,而是一种数据存储方式。聚集表示数据行和主键聚簇存储

    在一起,数据行在磁盘的排列和索引排序保持一致。

  • InnoDB中的主键索引是聚簇索引,其他索引(辅助索引)为非聚簇索引。

  • MyISAM中不使用聚集索引。

  • 聚集索引的优点:数据按照聚集索引排列顺序,当按主键进行搜索时,由于数据的聚集特点,MySQL不用频繁跨磁盘块提取数据,I/O次数减少,效率大大提高。

  • innoDB表的主键尽量选用单调字段,否则插入数据时需要调整B+树,使插入效率降低。

相关文章:

  • 国外 wordpress 免费空间/推广普通话手抄报内容
  • 网站在线布局/每日一则小新闻
  • 白沟网站建设/seo社区
  • 网站建设主要工作/百度竞价登陆
  • 上市设计公司网站/站长统计app软件下载2021
  • 建设部网站继续教育/网站维护合同
  • STM32串口通信-简单版
  • 数据结构:图的遍历
  • QT+OSG/osgEarth编译之十:MiniZip+Qt编译(一套代码、一套框架,跨平台编译,版本:MiniZip-1.1)
  • 青龙面板拉库命令大全最新【2022-10-13】
  • 阿里MySQL应用实战与性能调优手册惨遭泄漏,GitHub下载量超23K+
  • 基于树莓派的智能家居项目整理
  • 408 | 数据结构代码算法题模板技巧 之 单链表
  • Spring 注解开发下的依赖注入(自动装配)(引用类型)(普通类型)(加载properties文件)
  • 【IVI】车载设备硬件抽象层VHAL
  • docker学习-容器中的进程
  • 【登录界面】vue、element-ui登录界面模板
  • Bug分支