用唯一索引兜底防重要点
- 对已清干净的表加 UNIQUE 索引,杜绝未来重复
- ALTER TABLE 表 ADD UNIQUE KEY(列) 即可
- 组合唯一:UNIQUE KEY(列1, 列2) 防组合重复
- 历史重复没清完就加索引会失败,先查重再建
- 写入冲突时用 INSERT IGNORE 或 REPLACE 处理
- 唯一索引同时提升按该列查询的速度
用唯一索引兜底防重示例
-- 先确认没有重复
SELECT email, COUNT(*) AS cnt
FROM member GROUP BY email HAVING cnt != 1;
-- 确认干净后加唯一索引
ALTER TABLE member ADD UNIQUE KEY uk_email (email);
避坑提醒:加唯一索引前必跑一遍查重 SQL,只要还有重复行,ALTER 会直接报错失败,别跳过这步校验。