主键索引
定义
主键索引是基于表的主键列构建的索引。主键是唯一标识表中每一行记录的列,因此主键索引的键值是唯一的。
叶子节点中存储整行记录数据
主键索引在B+树的叶节点上存储整行记录的数据。
这意味着通过主键索引可以直接定位到具体的记录数据,因为主键是唯一的,所以查找速度非常快。
叶子节点的排序顺序按主键顺序排列
B+树的叶节点按照主键的顺序进行排序,这样可以支持范围查询,即根据主键的大小范围快速检索数据。
非主键索引
定义
非主键索引是基于表的非主键列(或多列)构建的索引。非主键索引的键值可以包含重复值。
叶子节点中不存储整行记录数据
非主键索引的叶节点不存储整行记录的数据,而是存储了对应记录的主键值和指向记录的指针(或称为RID)。
通过非主键索引可以先定位到主键值,再通过主键索引定位到具体记录。
非主键索引的键值顺序与索引列的排序顺序有关
单列索引
按照索引列的排序顺序进行排序。
多列索引
按照多列索引,按照第一列排序,当第一列的值相同时,再按照第二列排序,以此类推。
总结
主键索引和非主键索引在B+树上的区别在于叶节点的存储方式和索引的键值唯一性。
主键索引可以直接定位到记录数据,键值唯一。
而非主键索引需要通过主键索引进一步定位,键值可以重复。