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