MST
星途 面试题库

面试题:MySQL配置优化之索引优化

在MySQL中,假设有一个电商订单表orders,包含字段order_id(订单ID,主键)、user_id(用户ID)、order_date(订单日期)、total_amount(订单总金额)。现在查询某个用户在特定时间段内的订单总金额,应如何创建索引来优化查询性能?请阐述原因及创建索引的SQL语句。
22.3万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

原因

  1. 复合索引:为了优化查询某个用户在特定时间段内的订单总金额,创建复合索引是较为合适的选择。因为复合索引在查询时可以利用索引的最左前缀原则,提高查询效率。
  2. 字段顺序user_id 应放在复合索引的首位,因为查询条件首先是根据用户ID筛选;order_date 放在第二位,用于筛选特定时间段。这样的顺序能够最大程度匹配查询需求,减少全表扫描,快速定位到符合条件的数据。

创建索引的SQL语句

CREATE INDEX idx_user_date_amount ON orders (user_id, order_date);

此SQL语句创建了一个名为 idx_user_date_amount 的复合索引,涵盖 user_idorder_date 字段,能有效优化查询特定用户在特定时间段内订单总金额的查询性能。