问答题 某学校的学籍管理系统实现了对学生学籍信息的管理,其中学生表结构为:学生表(学号,姓名,性别,系号,是否有学籍),此表中除学号列有唯一索引外,其他列均无索引。
问答题 设学籍管理系统中经常执行如下形式的操作: SELECT*FROM学生表 WHERE姓名='张三'AND系号='10'AND是否有学籍='有' 系统运行中发现这类操作的效率比较低,系统工程师建议:由于查询条件中使用了“系号”、“姓名”和“是否有学籍”三列,建议在这三个列上分别建立索引,以提高查询效率。 请问其建议建立的三个索引是否都能提高查询效率?请简要说明原因。
【正确答案】不能都提高查询效率,对于姓名和系号上建立索引能够提高查询效率,但是在是否有学籍属性列上由于只有两种取值:有或是没有,若在其上建立索引,则平均起来,每个属性值对应一半的元组,用索引检索,并不能明显加快检索的速度。
【答案解析】
问答题 设学生表中有下列数据:
学号 姓名 性别 系号 是否有学籍
2008337 丁一 10
2008338 房彬彬 10
2008339 马宏伟 10
2008556 王斌 20
2008558 张伟 20
2008559 丁二 20
并且已经在学生表的姓名列上建立了一个非聚集索引(按姓名拼音升序排序)。请给出查找码“姓名”对应的稠密索引示意图。
【正确答案】[*]
【答案解析】