✅ 一句话区分
-
主键(Primary Key):唯一标识一行数据,不能重复,不能为 NULL,一个表只能有一个。
-
索引(Index):加速查询用的“目录”,可以重复,可以为 NULL,一个表可以有多个。
🔍 类比理解
| 概念 | 类比图书馆 |
|---|---|
| 主键 | 书的编号(唯一,不能重复) |
| 索引 | 书的目录卡片(帮你快速找到某类书) |
✅ 如何给频繁读取的字段加索引?
1. 确认字段确实频繁出现在:
-
WHERE条件 -
JOIN条件 -
ORDER BY -
GROUP BY
2. 加索引语法(以 MySQL 为例):
-- 单列索引
CREATE INDEX idx_user_email ON users(email);
-- 联合索引(多列组合)
CREATE INDEX idx_user_status_created ON users(status, created_at);
-- 唯一索引(字段值必须唯一)
CREATE UNIQUE INDEX idx_user_username ON users(username);
3. 注意事项(⚠️ 别乱加):
| 问题 | 说明 |
|---|---|
| 写操作变慢 | 每次 INSERT/UPDATE/DELETE 都要更新索引 |
| 占用磁盘空间 | 索引是额外的数据结构 |
| 选择性低的字段别加索引 | 如性别(男/女),加索引效果差 |
| 前缀索引(长字符串) | 如 VARCHAR(255),可只索引前 20 个字符:CREATE INDEX idx_email_prefix ON users(email(20)); |
✅ 小结口诀
主键是“身份证”,索引是“目录卡”;读多用索引,写多慎加索引。
如果你有具体表结构或查询语句,我可以帮你判断哪些字段值得加索引。
484

被折叠的 条评论
为什么被折叠?



