简答题
数据库
2019-03-01
(10分)在SQL Server 2008的数据库中存在如下两张关系表:
学生表(学号,姓名,性别,身份证号,系所号),学号为主码
系所表(系所号,系所名,系所简称),系所号为主码
在数据库中执行如下T-SQL代码:


(1)执行过程中发现速度比较缓慢,为了解决性能问题,需在功能不变的情况下,将此TSQL代码改为一条SQL语句:
s-选择 c-选择 (术)FROM学生表JOIN系所表ON学生表.系所号=系所表.系所号WHERE系所名LIKE´%电%´;
请分析此改变是否可以提高性能,并给出原因。
(2)学生表的身份证号和姓名上建有一个复合索引,索引建立语句为
CREATEINDEX idx_身份证号_姓名ON学生表(身份证号,姓名)
请指出如下两个查询语句能否使用此索引并说明原因。
s-选择 FROM学生表WHERE身份证号=´123456789012345678´;
s-选择 *FROM学生表WHERE姓名=´小明´;
参考答案
暂无
答案解析
【解题思路】
本题考查的是T-SQL与SQL语句使用的区别,以及索引相关知识,如索引定义,在什么地方建立索引,建立索引的条件等等。
(1)T-SQL即Transact-SQL,是SQL在Microsoft SQL Server上的增强版,它是用来让应用程序与SQL Server沟通的主要语言。T-SQL提供标准SQL的DDL和DML功能,加上延伸的函数、系统预存程序以及程式设计结构(例如IF和WHILE)让程式设计更有弹性。
SQL是集DDL、DML、DCL为一体的标准关系数据库语言。其中DDL数据定义语言用于定义和管理SQL数据库中的所有对象的语言;DML数据操纵语言,SQL中处理数据等操作统称为数据操纵语言。
SQL作为结构化查询语言,是标准的关系型数据库通用的标准语言;T-SQL是在SQL基础上扩展的SQL Server中使用的语言。
(2)索引的知识
索引技术是一种快速数据访问技术,它将一个文件的每个记录在某个或某些领域(或称为属性)上的取值与该记录的物理地址直接联系起来,提供了一种根据记录域的取值快速访问文件记录的机制。索引的使用要恰到好处,其使用原则一般如下:
①经常在查询中作为条件被使用的列,应为其建立索引;
②频繁进行排序或分组(即进行group by或order by操作)的列,应为其建立索引;
③一个列的值域很大时,应为其建立索引;
④如果待排序的列由多个,应在这些列上建立复合索引。
【参考答案】
(1)s-选择 c-选择(*)FROM学生表JOIN系所表ON学生表.系所号=系所表.系所号WHERE系所名LIKE'%电%'性能更好。
原因:T-SQL的代码需要先扫描一遍系所表,然后根据扫描得到的每个记录重新扫描一遍学生表得出结果。使用所写的SQL语句实现同样的功能,将学生表和系所表连接之后按条件过滤,只需要扫描一遍连接之后的表即可。
(2)创建的复合索引对第二条语句的查询效率提高不明显,因为其是复合索引且身份证号排在前面,对查找姓名的查询效率提高不明显,而明显会提高第一条语句的查询效率。
本题考查的是T-SQL与SQL语句使用的区别,以及索引相关知识,如索引定义,在什么地方建立索引,建立索引的条件等等。
(1)T-SQL即Transact-SQL,是SQL在Microsoft SQL Server上的增强版,它是用来让应用程序与SQL Server沟通的主要语言。T-SQL提供标准SQL的DDL和DML功能,加上延伸的函数、系统预存程序以及程式设计结构(例如IF和WHILE)让程式设计更有弹性。
SQL是集DDL、DML、DCL为一体的标准关系数据库语言。其中DDL数据定义语言用于定义和管理SQL数据库中的所有对象的语言;DML数据操纵语言,SQL中处理数据等操作统称为数据操纵语言。
SQL作为结构化查询语言,是标准的关系型数据库通用的标准语言;T-SQL是在SQL基础上扩展的SQL Server中使用的语言。
(2)索引的知识
索引技术是一种快速数据访问技术,它将一个文件的每个记录在某个或某些领域(或称为属性)上的取值与该记录的物理地址直接联系起来,提供了一种根据记录域的取值快速访问文件记录的机制。索引的使用要恰到好处,其使用原则一般如下:
①经常在查询中作为条件被使用的列,应为其建立索引;
②频繁进行排序或分组(即进行group by或order by操作)的列,应为其建立索引;
③一个列的值域很大时,应为其建立索引;
④如果待排序的列由多个,应在这些列上建立复合索引。
【参考答案】
(1)s-选择 c-选择(*)FROM学生表JOIN系所表ON学生表.系所号=系所表.系所号WHERE系所名LIKE'%电%'性能更好。
原因:T-SQL的代码需要先扫描一遍系所表,然后根据扫描得到的每个记录重新扫描一遍学生表得出结果。使用所写的SQL语句实现同样的功能,将学生表和系所表连接之后按条件过滤,只需要扫描一遍连接之后的表即可。
(2)创建的复合索引对第二条语句的查询效率提高不明显,因为其是复合索引且身份证号排在前面,对查找姓名的查询效率提高不明显,而明显会提高第一条语句的查询效率。