真题再现(2022年软件设计师真题)

四季读书网 3 0
真题再现(2022年软件设计师真题)

在某电商平台的订单表(包含订单ID、用户ID、商品ID、下单时间、订单金额等字段)中,频繁执行“查询某用户30天内的订单”操作。为提高该查询的效率,最适合创建索引的字段是()。A. 订单IDB. 用户ID + 下单时间C. 商品IDD. 订单金额

考点解析

本题核心考查数据库索引的作用与设计原则:

索引是帮助数据库高效获取数据的数据结构,能加快查询速度,但会降低插入、更新、删除的效率(因需维护索引)。
适合创建索引的场景:频繁作为查询条件的字段、关联查询的关联字段;不适合的场景:频繁修改的字段、值重复率高的字段(如性别)。
复合索引(多字段组合)需遵循“最左前缀匹配原则”,即查询条件包含索引的最左字段时,索引才会生效。

详细分析过程

题干中查询条件是“某用户(用户ID)+ 30天内(下单时间)”,需针对该条件设计索引:

选项A:订单ID是主键(通常默认有索引),但查询条件不涉及订单ID,索引无法生效,排除。
选项B:“用户ID + 下单时间”的复合索引,符合查询条件(用户ID是最左字段,下单时间用于范围筛选),能直接定位到目标数据,显著提升查询效率,正确。
选项C:商品ID与查询条件无关,索引无效,排除。
选项D:订单金额不涉及查询条件,索引无意义,排除。

工作中的实际应用

早年维护一个订单系统时,用户投诉“查询近期订单”太慢,要等5秒以上。排查发现订单表有1000万条数据,且未针对“用户ID+下单时间”建索引,查询时需全表扫描。

创建复合索引后,查询时间从5秒降至0.1秒。但后来发现,新增订单的速度变慢了——因每次插入都要更新索引。这提醒我们:索引不是越多越好,需根据业务场景权衡。比如,若系统以查询为主(如电商订单查询),多建索引利大于弊;若以写入为主(如实时日志系统),则应少建索引。

另外,曾犯过一个错误:给“订单状态”(值只有“待支付”“已完成”等,重复率高)建了索引,结果查询时索引几乎没生效,反而浪费了存储空间。这说明,值重复率高的字段不适合建索引。

答案总结

针对频繁使用的查询条件设计复合索引,遵循最左前缀原则,能最大化提升查询效率。

答案:B

抱歉,评论功能暂时关闭!