跳至主要內容

唯一索引是怎么实现的?

fangzhipeng约 497 字大约 2 分钟

当数据库系统创建唯一索引时,它是利用一种数据结构来确保索引列中的值是唯一的。最常见创建唯一索引的数据结构是是B树(或B+树),也可以使用哈希索引。

下面是唯一索引的一般实现方法:

  1. B树索引
    • 在B树索引中,每个节点都包含一组有序的键值对,这些键值对代表索引列中的值和对应的行指针(或叶子节点的偏移量)。
    • MySQL 在创建唯一索引时,会在索引的 B+ 树结构中建立一个哈希表,用于存储索引的键值。当向表中插入一行数据时,MySQL 会先在哈希表中查询是否存在相同的键值,如果不存在则插入数据,否则返回错误。
  2. 哈希索引(某些数据库系统支持):
    • 哈希索引使用哈希函数将索引列的值映射到一个哈希表中的特定槽位。
    • 对于唯一索引,哈希函数必须确保不同的索引值映射到不同的槽位,以避免冲突。
    • 在插入新值时,数据库系统首先通过哈希函数计算索引值对应的槽位,然后检查该槽位是否已经被占用。如果该槽位为空,则将新值插入其中;如果已经被占用,则需要进行额外的处理来处理哈希冲突。

无论是使用B树索引还是哈希索引,数据库系统都会利用这些数据结构来快速定位到索引列中的值,以确保唯一性约束的有效性。在执行插入、更新和删除操作时,数据库系统会自动维护唯一索引,确保它的唯一性。

方志朋_官方公众号
方志朋_官方公众号