温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

主键和索引有什么区别

发布时间:2026-11-01 20:35:21 来源:亿速云 阅读:94 作者:小樊 栏目:数据库

在关系型数据库中,**主键(Primary Key)和索引(Index)**经常被一起提到,但它们的作用和本质并不相同。下面从多个角度对比说明。


一、本质区别

1. 主键(Primary Key)

  • 是一种约束(Constraint)
  • 用于唯一标识表中的每一行记录
  • 特点:
    • 唯一(不能重复)
    • 非空(不能为 NULL)
    • 一个表只能有一个主键

2. 索引(Index)

  • 是一种数据结构(用于加速查询)
  • 用于提高查询效率
  • 特点:
    • 可以重复
    • 可以为 NULL
    • 一个表可以有多个索引

二、关系说明

主键会自动创建索引,但索引不一定是主键

  • 当你定义主键时,数据库通常会自动创建一个唯一索引
  • 但这个索引的“目的”是支持主键约束,而不只是查询加速

三、功能对比

对比项 主键 索引
是否唯一 必须唯一 可唯一也可非唯一
是否允许 NULL 不允许 允许
数量限制 一个表只能一个 一个表可多个
主要作用 标识记录、保证数据完整性 加快查询速度
是否自动创建 定义即存在 需手动或随主键自动创建

四、示例说明

-- 主键(会自动生成索引)
CREATE TABLE user (
  id INT PRIMARY KEY,
  name VARCHAR(50)
);

-- 普通索引(仅加速查询)
CREATE INDEX idx_name ON user(name);
  • id 是主键,保证每条记录唯一
  • name 上的索引,只是为了让 WHERE name = 'xxx' 更快

五、常见误区

❌ 误区 1:主键就是索引
✅ 正确:主键是一种约束,数据库用索引来实现它

❌ 误区 2:有索引就快
✅ 正确:索引设计不合理反而会降低写入性能


六、一句话总结

主键保证“你是谁”,索引解决“怎么更快找到你”。

如果你愿意,我也可以结合 InnoDB 聚集索引、联合索引 或 实际性能问题 再深入讲。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手