MST

星途 面试题库

面试题:MariaDB中普通索引和唯一索引在使用和性能上有何区别

请阐述在MariaDB中,普通索引和唯一索引在定义、数据约束以及查询性能方面的主要差异,并举例说明何时适合使用普通索引,何时适合使用唯一索引。
37.3万 热度难度
数据库MariaDB

知识考点

AI 面试

面试题答案

一键面试

定义差异

  • 普通索引:允许在索引列中出现重复值,它主要用于加速数据查询,不限制数据的唯一性。定义语法示例:CREATE INDEX idx_column_name ON table_name(column_name);
  • 唯一索引:要求索引列中的值必须唯一,不允许出现重复值(但允许有一个 NULL 值)。定义语法示例:CREATE UNIQUE INDEX idx_column_name ON table_name(column_name);

数据约束差异

  • 普通索引:对数据没有唯一性约束,即同一列可以存储多个相同的值。例如,在员工表中,员工的部门列建立普通索引后,不同员工可以属于同一个部门。
  • 唯一索引:强制数据的唯一性,如在用户表的 email 列建立唯一索引,每个用户的 email 必须是唯一的,不能重复。

查询性能差异

  • 普通索引:在查询时,数据库会扫描索引找到满足条件的所有记录。当查询结果有多条符合条件的数据时,普通索引可以快速定位到这些数据,适合范围查询(如 BETWEEN>< 等)。例如,查询成绩在 80 到 90 分之间的学生,使用普通索引可以快速定位到符合范围的记录。
  • 唯一索引:由于值的唯一性,在查询时一旦找到符合条件的记录,就可以停止搜索,查询效率通常更高,尤其适合精确匹配查询(如 =)。例如,根据身份证号查询用户信息,身份证号是唯一的,使用唯一索引可以迅速定位到该用户。

适用场景

  • 普通索引适用场景
    • 当列中有重复值且需要对这些列进行频繁查询,如查询某个城市的所有用户,城市列可能有多个相同值,此时使用普通索引。
    • 范围查询频繁的场景,如查询某个时间段内的订单记录。
  • 唯一索引适用场景
    • 当列中的数据必须唯一,如用户的用户名、手机号码等,确保数据的完整性和准确性。
    • 精确匹配查询频繁的场景,如根据学号查询学生详细信息。