问答题 某学校的学籍管理系统实现了对学生学籍信息的管理,其中学生表结构为:学生表(学号, 姓名, 性别, 系号, 是否有学籍),此表中除学号列有唯一索引外,其它列均无索引。
问答题 设学籍管理系统中经常执行如下形式的操作:
SELECT*FROM学生表
WHERE姓名="张三" AND 系号="10" AND 是否有学籍="有"
系统运行中发现这类操作的效率比较低,系统工程师建议:由于查询条件中使用了“系号”、“姓名”和“是否有学籍”三列,建议在这三个列上分别建立索引,以提高查询效率。
请问其建议建立的三个索引是否都能提高查询效率?请简要说明原因。
【正确答案】
【答案解析】不能。使用索引是需要付出代价的,增加了系统维护时间和占用了系统时间。学籍、系号这两个字段重复值比较多,因此在这两个字段上添加索引不会显著的增加查询速度,减少用户的响应时间。相反,因为需要占用空间,反而会降低数据库的整体性能。
问答题 设学生表中有下列数据:
学号
姓名
性别
系号
是否有学籍
2008337
丁一
10
2008338
房彬彬
10
2008339
马宏斌
10
2008556
王斌
20
2008558
张伟
20
2008559
丁二
20
并且已经在学生表的姓名列上建立了一个非聚集索引(按姓名拼音升序排序)。请给出查找码“姓名”对应的稠密索引示意图。
【正确答案】
【答案解析】