文章目录
前言
今天的话题是,在不同的业务场景下,应该选择普通索引,还是唯一索引
假设现在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会执行类似下面的sql语句;
select name from CUser where id_card = 'xxxxxxxyyyyyyzzzzz';
这种情况下,会考虑在id_card
字段上建索引。
由于身份证号字段比较大,不建议作为主键,那么现在就有了两个选择,要么给id_card
字段创建唯一索引,要么创建一个普通索引。如果业务代码已经保证不会写入重复的身份证号,那么这两个选择逻辑上都是正确的。
那么从性能上考虑,应该选择唯一索引还是普通索引呢,对应的依据是什么呢?
以下图为例,假设字段k上的值都不重复