在关系型数据库中,**主键(Primary Key)和索引(Index)**经常被一起提到,但它们本质不同。下面从定义、作用、特点等方面说明区别。
主键是表中用于唯一标识一行记录的字段或字段组合。
✅ 是的
在大多数数据库(如 MySQL、Oracle、SQL Server)中:
主键会自动创建一个唯一索引
也就是说:
主键 = 约束 + 索引
索引是数据库中用于加速查询的数据结构(如 B+ 树)。
SELECT 查询速度INSERT / UPDATE / DELETE 的性能| 对比项 | 主键 | 索引 |
|---|---|---|
| 是否保证唯一 | ✅ 是 | ❌ 普通索引不保证 |
| 是否允许 NULL | ❌ 不允许 | ✅ 允许(普通索引) |
| 一个表数量 | 只能 1 个 | 可多个 |
| 主要目的 | 标识记录 | 提高查询性能 |
| 是否自动创建 | 数据库自动建索引 | 需手动或按需创建 |
| 是否可为空 | 否 | 可以 |
CREATE TABLE user (
id INT PRIMARY KEY, -- 主键,自动建唯一索引
name VARCHAR(50),
email VARCHAR(50),
INDEX idx_name (name) -- 普通索引,仅加速查询
);
id:主键,不能重复,不能为空name:普通索引,可重复,可为空主键是一种约束,用来唯一标识数据;索引是一种加速查询的手段。主键一定包含索引,但索引不一定是主键。
如果你愿意,我也可以结合 InnoDB 底层结构 或 面试常问点 再深入讲。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。