[MySQL 面试题]-索引 30 -32 什么是唯一索引(Unique Index)?

124 阅读1分钟

image.png

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)表示同一个用户不能重复拥有相同角色