30 什么是唯一索引(Unique Index)?
强制索引列中的所有值必须唯一,即不能出现重复(可以为 null)
唯一性约束:每个值必须唯一(同一列不能重复)
可以包含 nul:允许多个nul(null ≠ null)
支持复合唯一索引:可以由多个列共同构成唯一性
create unique index idx_email on user(email)
=
alter table user add unique (email)
用户名、邮箱、手机号、身份证号等。
31 唯一索引是否影响性能?
唯一索引:除了查找位置,还需检查是否已存在相同值(违背唯一性将报错)
此过程在高并发环境中可能涉及 加锁/行级冲突检查,对性能产生一定影响。
32 什么时候使用唯一索引?
📋 推荐使用唯一索引的典型场景:
| 场景 | 示例字段 | 理由说明 |
|---|---|---|
| 用户唯一标识 | username, email, phone | 保证每个用户唯一 |
| 实体身份识别 | 身份证号, 学号, 车牌号 | 防止重复注册或绑定 |
| 业务编号 | 订单号, 发票号, 交易号 | 保证单据唯一 |
| 登录凭据 | open_id, union_id, social_id | 第三方账号登录唯一性 |
| 外部对接标识 | external_id, partner_code | 第三方系统对接要求不可重复 |
| 联合唯一 | (user_id, role_id) | 表示同一个用户不能重复拥有相同角色 |