聚集索引(clustered index)不只能用于主键,但在许多数据库系统中,主键默认情况下会使用聚集索引实现。聚集索引指的是表中的数据行按照索引的顺序存储在磁盘上,因此一个表只能有一个聚集索引,因为数据物理存储只能有一种顺序。

主键和聚集索引的关系:

  • 如果表定义了主键,很多数据库(如 MySQL 的 InnoDB 存储引擎)会将该主键自动作为聚集索引。
  • 主键不是聚集索引的必要条件:如果表中没有主键,也没有定义显式的唯一索引,许多数据库会选择或生成一个隐式的列(如主键自增字段或内置的行 ID),并用它创建聚集索引。

非主键列作为聚集索引:

你可以选择一个非主键列来定义聚集索引,只要该列具有唯一性。例如:

  • 在 SQL Server 中,允许你明确选择一个非主键列作为聚集索引。
  • 在 MySQL 中,业务实际需求允许的情况下,你可以创建一个唯一索引,并将其作为聚集索引。

应用场景有哪些?

  • 主键作为聚集索引:适合主键是自动递增的场景,比如订单表的 order_id。数据的插入效率高。
  • 主键列作为聚集索引:适合查询频繁的非主键列,比如有一个时间戳字段 created_at,对基于时间范围的查询优化效果显著。

如何查看聚集索引?

在 MySQL 中,可以通过以下命令查看某张表的索引情况:

SHOW INDEX FROM table_name;

其中 Key_namePRIMARY 的通常就是该表默认的聚集索引(针对 InnoDB 引擎)。
总之,聚集索引不只是主键专属,但需要慎重选择,因为它会影响表数据的物理存储顺序,并且对于插入、更新和删除操作的性能有影响。



聚集索引只能用于主键吗插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://choupangxia.com/2025/09/15/clustered-index/