数据库系统工程师经典试题解析.docxVIP

  • 0
  • 0
  • 约1.29千字
  • 约 3页
  • 2026-07-17 发布于云南
  • 举报

数据库系统工程师经典试题解析

假设Student表数据量很大,且经常执行类似上述查询。为了提高该查询的执行效率,应该在哪个或哪些列上创建索引?请简述理由,并说明索引的类型(如B+树索引、哈希索引等)。

解析:

这道题考察对索引设计原则的理解。

1.分析查询条件:查询条件(WHERE子句)涉及Sdept和Sage两个列,查询结果是Sname和Sage。

2.选择索引列:

*单列索引:可以考虑在Sdept上建索引,或者在Sage上建索引。但单独在Sage上建索引,对于查询条件“Sdept=CS”的过滤效果不佳。单独在Sdept上建索引,能快速定位到Sdept为CS的记录,然后再根据Sage20进行过滤。如果CS系的学生数量在总人数中占比较小,那么在Sdept上建索引是有效的。

*复合索引:创建(Sdept,Sage)的复合索引会是更优的选择。因为查询条件中Sdept是等值查询,Sage是范围查询。复合索引的前缀匹配原则使得(Sdept,Sage)的索引可以先快速定位到Sdept=CS的所有记录,然后在这些记录中,根据Sage的索引部分继续筛选出Sage20的记录,效率更高。

3.索引类型:对于这种范围查询(Sage20)和等值查询(Sdept=CS)的组合,B+树索引是合适的选择。B+树索引支持高效的范围查询和有序访问。哈希索引虽然等值查询快

文档评论(0)

1亿VIP精品文档

相关文档