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

mysql索引 -- 聚簇索引,非聚簇索引,如何查看linux下的数据库文件,普通/辅助索引(回表查询)

目录

聚簇索引和非聚簇索引

聚簇索引

介绍

示例

查看当前的数据库数据目录

表文件

非聚簇索引

介绍

myisam

示例

普通(辅助)索引

引入(回表查询)


mysql索引结构详细介绍 -- mysql索引 -- 索引的硬件理解(磁盘,磁盘与系统),软件理解(mysql,与系统io,buffer pool),索引结构介绍和理解(page内部,page之间,为什么是b+树)-CSDN博客

聚簇索引和非聚簇索引

聚簇索引

介绍

将用户数据与索引数据放在一起的索引方案

示例

查看当前的数据库数据目录
show variables like 'datadir';

然后我们可以在linux下进入该目录,会发现我们所有创建的数据库在里面以目录文件形式存在:

进入某个目录,里面包含了该数据库中所有表相关数据:

表文件

使用innodb存储引擎建表后,linux下会有两个对应文件被创建出来:

.frm

  • 保存表结构数据

.idb

  • 保存索引结构和表文件数据
  • 这样就可以证明,使用innodb存储引擎时,会将数据和索引结构放在一起,而这就是聚簇索引的定义

非聚簇索引

介绍

将用户数据与索引数据分离的索引方案

myisam

myisam存储引擎的索引结构也使用b+树,但和innodb中的不同

innodb是将数据和b+树放在一块,整体作为索引结构:

而myisam是单独将b+树拎出来作为索引结构,然后在叶子结点内存放指向数据的指针:

  • 所以,它比innodb中的查找过程多一步,通过找到的数据指针,找到数据

示例

使用myisam存储引擎建表后,会创建三个文件:

.frm

  • 表结构数据

.MYD

  • 表数据

.MYI

  • 索引结构

这样就可以证明,使用myisam存储引擎时,会将数据和索引结构分开存放,而这就是非聚簇索引的定义

普通(辅助)索引

引入(回表查询)

之前我们看到的,都是以主键建立的索引结构,也可以以其他列作为键值创建索引(也就是b+树):

innodb中建立的辅助索引,如果仍按照聚簇索引方式创建,就也会在叶子结点中存放表数据

  • 那么,相当于一份数据在多个b+树中存放了多份
  • 没这个必要
  • 所以,辅助索引中的叶子结点只会存放该行数据对应的key值(主键键值),然后根据这个key值,去主键索引中查找相应数据
  • 以上过程被称为回表查询

myisam中,以两种键值创建的b+树没啥区别

  • 因为myisam将数据和b+树分开,索引结构存放的是数据的地址,不会出现数据重复存放的问题,所以没有区别


http://www.kler.cn/a/323329.html

相关文章:

  • Notepad++的完美替代
  • Android加载pdf
  • 计算机视觉在自动驾驶汽车中的应用
  • 【CANOE】【学习】【DecodeString】字节转为中文字符输出
  • 【SpringBoot】公共字段自动填充
  • 查询DBA_FREE_SPACE缓慢问题
  • python快速搭建https服务器
  • UNI-SOP应用场景(1)- 纯前端预开发
  • ChadGPT 01
  • 98问答网是一个怎样的平台?它主要提供哪些服务?
  • 24年下重庆事业单位考试报名超详细流程
  • ​​合​​合​​信​息​​​龙​​湖​​数​​科​​一​​面​​​
  • MySQL慢查询优化指南
  • 网络安全等级保护 | 规范企业网络系统安全使用 | 天锐股份助力等保制度落地
  • oracle数据备份和导入
  • 深圳龙链科技:全球区块链开发先锋,领航Web3生态未来
  • 如何使用Git管理项目工程
  • .NET IIS发布项目后设置虚拟路径访问文件 404
  • 清华大学开源 CogVideoX-5B-I2V 模型,以支持图生视频
  • Serverless and Go
  • 电商系统开发全攻略:基于Spring Boot的在线商城
  • 收银系统源码-ERP进销存解决方案
  • 你知道AI模型是如何学习的吗???零基础入门到精通,收藏这一篇就够了
  • 基于STM32和FPGA的射频数据采集系统设计流程
  • VSCode开发Vue3+TS项目中遇到各种波浪线(诊断信息)
  • cobaltstrike之execute-assembly内存加载—后渗透利用