MST

星途 面试题库

面试题:MySQL索引机制 - 普通索引与唯一索引的区别

在MySQL中,普通索引和唯一索引都用于提高查询效率。请阐述它们在定义、使用场景以及对数据插入的影响上有哪些区别?
38.5万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

定义区别

  • 普通索引:允许在索引列中出现重复值,创建普通索引的目的主要是为了加速查询。语法示例:CREATE INDEX index_name ON table_name(column_name);
  • 唯一索引:不允许在索引列中出现重复值,除了加速查询外,还能确保数据的唯一性。语法示例:CREATE UNIQUE INDEX index_name ON table_name(column_name);

使用场景区别

  • 普通索引:适用于频繁查询,但数据可能存在重复值的场景。比如在一个存储商品信息的表中,商品名称字段可能会有重复(不同品牌的相同名称商品等),为商品名称字段创建普通索引可以加速按商品名称查询商品信息的操作。
  • 唯一索引:适用于数据必须唯一的场景,如用户表中的用户账号字段,每个用户的账号必须是唯一的,使用唯一索引既能保证数据的唯一性,又能加速按账号查询用户信息的操作。

对数据插入的影响区别

  • 普通索引:插入数据时,数据库只需要进行索引的维护操作,只要不违反其他约束(如非空约束等),即使插入重复值也能成功。例如在一个员工表中,员工年龄字段创建了普通索引,插入两个年龄相同的员工数据是允许的,数据库会更新普通索引以反映新插入的数据。
  • 唯一索引:插入数据时,数据库不仅要维护索引,还要检查插入的数据在唯一索引列上是否唯一。若插入重复值,数据库会抛出唯一性冲突错误,插入操作失败。例如在用户表中,如果为用户手机号字段创建了唯一索引,当插入一个已经存在的手机号时,就会报错并导致插入失败。