什么是聚集索引、非聚集索引、覆盖索引?

什么是聚集索引、非聚集索引、覆盖索引?
最新回答
⌒小污見ノ大污

2026-10-31 18:14:42

聚集索引是索引键值的逻辑顺序与表中相应行的物理顺序相同的索引。非聚集索引是索引与磁盘上的物理存储顺序不同的索引,其叶节点指向对应的数据块地址。覆盖索引则是允许从非主键索引中直接获取所需数据,避免回表操作的索引。

  • 聚集索引:

    • 定义:聚集索引决定了数据在数据库表中的物理存储顺序。
    • 特点:查询效率较高,因为数据按索引顺序存储,减少了磁盘I/O操作。常用于频繁搜索特定值的列。
    • 实例:在电话本中使用姓名排序,便于快速查找电话号码。
  • 非聚集索引:

    • 定义:非聚集索引与数据在磁盘上的物理存储顺序无关,其叶节点存储的是指向数据行的指针或地址。
    • 特点:查询时可能需要先通过非聚集索引找到数据行的指针,再通过指针访问数据行,增加了访问步骤。
    • 实例:汉语字典中的部首目录和检字表,通过它们可以找到字的页码,但需要先通过部首或笔画数定位到检字表,再通过检字表找到页码。
  • 覆盖索引:

    • 定义:覆盖索引是指查询所需的所有列都包含在索引中,因此可以直接从索引中获取所需数据,无需访问表中的数据行。
    • 特点:显著提高查询性能,因为避免了回表操作,减少了磁盘I/O。
    • 实例:在建立联合索引时,如果查询只需要姓名和年龄,那么这个联合索引就是一个覆盖索引,可以直接从索引中获取所需数据。