mysql索引:密集索引和稀疏索引的区别

密集索引

定义:密集索引文件中的每个搜索码值都对应一个索引值。

特点:

  1. B+树叶子节点保存的不仅仅是键值,还保存了该行的其他列的信息
  2. 密集索引决定了表的物理排列顺序,所以一个表只能有且仅有一个密集索引

MySQL数据库中,InnoDB定义密集索引:

mysql索引:密集索引和稀疏索引的区别
注意:一般InnoDB的稀疏索引,存储的是主键信息
mysql索引:密集索引和稀疏索引的区别
InnoDB文件存储方式:索引和数据存储在一个.ibd文件中
mysql索引:密集索引和稀疏索引的区别

稀疏索引

定义:稀疏索引文件只为索引码的某些值建立索引项

特点:B+树叶子节点保存的是键位信息和该行数据的地址,或保存的是键位信息和主键

MySQL数据库中:
不论是什么索引,MyISAM中,都是稀疏索引

注意:一般MyISAM的稀疏索引,存储的是行的地址值

mysql索引:密集索引和稀疏索引的区别
MyISAM引擎的文件存储方式:索引和数据分别存放,索引存放在.MYI文件下,数据存放在.MYD文件项

mysql索引:密集索引和稀疏索引的区别