MySQL索引类型普通索引唯一索引主键区别
时间:2026-11-15 07:14 作者:emer 分类: MySQL
前言
建表时索引类型选错会导致重复数据写入、查询用不上索引。普通索引、唯一索引、主键、全文索引各有约束和用途。本文讲解各类索引区别、创建语句、选择依据和注意事项。
操作步骤
1. 普通索引(加速查询,允许重复)
CREATE INDEX idx_phone ON users(phone);
2. 唯一索引(值不可重复,可为空)
CREATE UNIQUE INDEX uk_email ON users(email);
3. 主键索引(唯一且非空,每表一个)
ALTER TABLE users ADD PRIMARY KEY(id);
4. 联合索引(多列组合)
CREATE INDEX idx_name_city ON users(name,city);
5. 查看已有索引
SHOW INDEX FROM users;
6. 删除索引
DROP INDEX idx_phone ON users;
常见坑
- 唯一索引把 NULL 视为互不相同,多个 NULL 可共存。
- 主键同时是唯一索引,不能重复也不能 NULL。
- 联合索引遵守最左前缀,跳过首列用不上。
- 索引过多拖慢写入,只为高频查询列建。
- 低区分度列(性别)建索引收益低。
- 字符串索引可指定前缀长度节省空间。
- 外键列建议建索引,否则关联慢。
总结
普通索引只加速、唯一索引防重复、主键唯一非空且唯一、联合索引按最左前缀。按查询频率和区分度选型,别盲目加索引,写多读少表控制索引数量。
遇到问题加QQ23979811 协助处理