什么是聚集索引和非聚集索引 ( 或者聚簇索引和非聚簇索引 )

1.什么是聚集索引和非聚集索引 ?(聚簇索引和非聚簇索引)

聚集还是非聚集指的是B+Tree 叶结点存的是指针还是数据记录

MyISAM索引和数据分离,使用的是非聚集索引

InnoDB数据文件就是索引文件,主键索引就是聚集索引

(1)MyISAM引擎 默认是非聚集索引

       图解:在叶结点里面存储的是指向数据的指针,如叶结点5中存储的0x6A,指针指向的数据的表文件也就是数据文件,这里索引文件和数据文件是两个文件,所以说它是非聚集的。

① 非聚集索引文件存储方式

CREATE TABLE myisam_table (
    `id` INTEGER PRIMARY KEY,
     title VARCHAR(80)
) ENGINE = MYISAM;   
# 非聚集索引,存储需要两个文件myisam_table.MYD数据文件和myisam_table.MYI索引文件

(2)InnoDB引擎主键索引是聚集索引

      图解:叶结点即存储 主键 同时也存储 数据表里面的内容,如叶结点15, 存储主键34和数据Bob。

① 聚集索引件存储方式

CREATE TABLE innodb_table (
    `id` INTEGER PRIMARY KEY,
    `url_md5` char(32),
    KEY `idx_url` (`url_md5`)
) ENGINE = InnoDB;
# 聚集索引,只有一个文件innodb_table.idb,说明数据和索引存储在同一个文件

(3)InnoDB引擎辅助索引

       

      对于InnoDB引擎它的辅助索引,它的叶结点存储的是主键的值。然后再通过主键找到对应的数据。其实这是两个过程,这就是为什么在InnoDB引擎里面使用辅助索引要比直接使用主键索引慢一些的原因。

      辅助索引先找到主键以后再根据主键找到数据

 

聚集和非聚集区别是在 B+Tree的叶结点存储数据还是指针 ,

MyISAM 默认使用索引是非聚集的,

InnoDB 主键索引是聚集索引

  • 13
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值