MST

星途 面试题库

面试题:MySQL 数据库 Schema 性能调优之索引优化

在一个电商订单系统的 MySQL Schema 中,有订单表(orders),包含字段:订单号(order_id)、用户 ID(user_id)、下单时间(order_time)、订单金额(order_amount)等。查询经常需要根据用户 ID 和下单时间范围来获取订单信息。请阐述如何通过索引优化这个查询的性能,并写出对应的创建索引语句。
47.9万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

索引优化思路

为了优化根据用户 ID 和下单时间范围获取订单信息的查询性能,应创建复合索引。因为复合索引在查询时可以利用索引的最左前缀原则,当查询条件按照索引列顺序依次出现时,能快速定位到符合条件的数据,大大提高查询效率。在这个场景中,经常按照用户 ID 和下单时间范围查询,所以创建包含这两个字段的复合索引比较合适。

创建索引语句

CREATE INDEX idx_user_time ON orders (user_id, order_time);

上述语句在 orders 表上创建了名为 idx_user_time 的索引,该索引包含 user_idorder_time 两个字段。在查询时,如果 WHERE 子句中有 user_idorder_time 相关条件(user_id 在前,order_time 在后,且 order_time 支持范围查询),就可以使用该索引提高查询性能。