SQL 面试题 目录

SQL 中什么是复合索引 (Composite Index)?

推荐答案

复合索引(Composite Index)是指在数据库表中,基于多个列创建的索引。与单列索引不同,复合索引可以同时包含多个列的值,并且这些列的顺序在索引中非常重要。复合索引可以显著提高查询性能,尤其是在查询条件中使用了索引中的多个列时。

本题详细解读

什么是复合索引?

复合索引是数据库中的一种索引类型,它由多个列组成。与单列索引不同,复合索引可以同时包含多个列的值。复合索引的顺序非常重要,因为数据库在查询时只能从左到右使用索引中的列。例如,如果有一个复合索引 (col1, col2, col3),那么查询条件中必须包含 col1 才能使用这个索引,如果查询条件中只包含 col2col3,则无法使用这个索引。

复合索引的优点

  1. 提高查询性能:当查询条件中使用了复合索引中的多个列时,复合索引可以显著提高查询性能。
  2. 减少索引数量:使用复合索引可以减少为每个列单独创建索引的数量,从而减少存储空间和维护成本。

复合索引的缺点

  1. 索引顺序敏感:复合索引的顺序非常重要,如果查询条件中的列顺序与索引中的列顺序不一致,可能无法使用索引。
  2. 更新开销:当表中的数据发生变化时,复合索引需要更新,这可能会增加写操作的开销。

复合索引的使用场景

  1. 多列查询:当查询条件中经常使用多个列时,可以考虑使用复合索引。
  2. 排序和分组:如果查询中需要对多个列进行排序或分组,复合索引可以提高性能。

示例

假设有一个表 orders,包含以下列:order_id, customer_id, order_date。如果我们经常需要根据 customer_idorder_date 进行查询,可以创建一个复合索引:

这样,当执行以下查询时,数据库可以使用这个复合索引:

但如果查询条件中只包含 order_date,则无法使用这个复合索引:

注意事项

  1. 索引列顺序:在设计复合索引时,应根据查询条件中的列顺序来确定索引中的列顺序。
  2. 索引选择性:选择高选择性的列作为复合索引的前导列,可以提高索引的效率。
  3. 避免过度索引:过多的复合索引会增加存储和维护成本,应根据实际查询需求合理设计索引。
纠错
反馈