
如上图User表,id为主键,name为普通字段。
如果将id和name设置为索引,id是主键索引,name为普通索引,也叫做辅助索引。他们之间有什么区别呢?
InnoDB 存储引擎情况下
在InnoDB存储引擎的B+树的数据结构下,主键索引下跟着的是数据信息,而辅助索引下跟着的是主键的id。
如图所示:


使用主键索引查询的时候,可直接取到数据。
使用主键索引查询的时候,要先得到主键索引值,再根据索引值去匹配数据。

MYISAM 存储引擎情况下
MYISAM 的索引是非聚集索引,索引信息和数据信息在不同的文件下,无论是主键索引还是辅助索引下跟着的都是数据的指引地址,根据数据的指引地址去数据信息文件搜索所需数据。
本文探讨了InnoDB和MYISAM两种存储引擎下主键索引与辅助索引的区别。在InnoDB中,主键索引的叶子节点直接存储数据,辅助索引存储主键ID;而在MYISAM中,无论是主键还是辅助索引,都存储数据的指针。这影响了查询效率和数据存储的方式。
1271

被折叠的 条评论
为什么被折叠?



