存储引擎
密集索引与稀疏索引
-
密集索引文件中的每个搜索码值都对应一个索引值
-
稀疏索引文件只为索引码的某些值建立索引项
-
密集索引:
-
-
InnoDB索引检索流程:
-
定义:叶子节点不仅保存的是搜索的键值,还保存了当前行其他列的信息(简单理解就是其中一个叶子节点就是表中的一行数据),密集索引的顺序决定了表的物理顺序
-
inooDB中:每个表必须有且仅有一个密集索引
- 选取规则1,如果一个主键被定义,该主键则作为一个密集索引
- 选取规则2.如果没有主键,则表中第一个唯一非空索引作为密集索引
- 选取规则3.如果以上条件都不满足,则会生成一个隐藏的主键作为密集索引
- 注意点:非主键索引存储的都是当前索引键值的信息和指向主键索引树键的信息,通过非主键索引树查询或关联查询的时候可能就会出现再查询主键索引树
-
-
稀疏索引:
-
-
MyISAM索引检索流程:
-
定义:叶子节点仅保存了当前键位的信息和指定当前行的主键id信息,所以在通过稀疏索引查询指定行其他列信息的时候,就会有二次索引查询(先在稀疏索引中找到密集索引也就是主键索引的id再在主键索引树中找到该行的信息,并进行返回)
-
MyISAM中:主键索引和非主键索引没有什么不同,只是存储的键值内容不同
- 1.表的数据存储在独立的地方
- 2.每个索引树叶子节点都存储了该数据行的物理地址
-
InooDB与MyISAM的区别
InooDB
-
文件存储结构:
-
适用场景:
MyISAM
-
文件存储结构:
-
适用场景: