myisam 的主索引和次索引都指向物理行, 下面来进行讲解
innodb 的主键下存储该行的数据, 此索引指向对主键的引用
myisam 的索引存储图如下, 可以看出, 无论是 id 还是 cat_id, 下面都存储有存储物理地址的值通过主键索引或者次索引来查询数据的时候, 都是先查找到数据地址, 然后再到物理位置上去寻找数据
innodb 的索引存储图如下, 我们会发现, 主键索引下面直接存储有数据, 而次索引下, 存储的是主键的 id 通过主键查找数据的时候, 就会很快查找到数据, 但是通过次索引查找数据的时候, 需要先查找到对应的主键 id, 然后才能查找到对应的数据
nnodb 的主索引文件上 直接存放该行数据, 称为聚簇索引, 次索引指向对主键的引用
myisam 中, 主索引和次索引, 都指向物理行 (磁盘位置).
注意: innodb 来说,
1: 主键索引 既存储索引值, 又在叶子中存储行的数据
2: 如果没有主键, 则会 Unique key 做主键
3: 如果没有 unique, 则系统生成一个内部的 rowid 做主键.
4:
像 innodb 中, 主键的索引结构中, 既存储了主键值, 又存储了行数据, 这种结构称为聚簇索引
转自: https://blog.csdn.net/qq_25551295/article/details/48901317
参考: https://blog.csdn.net/lisuyibmd/article/details/53004848
来源: https://www.thinksaas.cn/group/topic/839314/