主页 > InnoDB存储引擎 > 唯一索引与普通索引的性能差距

唯一索引与普通索引的性能差距

小牛教程 InnoDB存储引擎 2021年06月16日
  CREATE TABLE `t` (
  
  `a` varchar(10) NOT NULL,
  
  `b` varchar(10) NOT NULL,
  
  UNIQUE KEY `i_a` (`a`),
  
  KEY `i_b` (`b`)
  
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8
  
  ①唯一索引特点:
  
  。值不能重复,可以为空
  
  。一张表可以创建多个唯一索引
  
  。如果表中已有数据,添加唯一索引时,该字段的值,不能重复,如果有重复的,就会报错
  
  select count(b) from t;
  
  select count(distinct b) from t;
  
  ②普通索引特点
  
  。值可以重复,可以为空
  
  。一张表可以创建多个普通索引
  
  ③唯一索引与普通索引的性能差距
  
  读性能差距:
  
  。唯一索引:由于唯一性约束,查找到第一个满足条件的记录后,就会停止继续匹配
  
  。普通索引:值不是唯一,可能会有重复值,需要继续查找
  
  总结:在读性能上,唯一索引的性能高于普通索引,性能差距非常小
  
  写性能差距:
  
  。唯一索引:在进行写操作时要判断这个操作是否违反了唯一性约束。这个判断必须是在将页加载到内存后,才能进行判断,无法使用change buffer
  
  。普通索引:在进行写操作时,如果数据页不在内存中,会将写操作放到change buffer
  
  总结:普通索引的写性能高于唯一索引
广告位