在SQLServer2000的某数据库中有如下两张关系表:   学生表(学号,姓名,性别,系号),学号为主码   系表(系号,系名,系简称),系号为主码   ①在数据库中执行如下T-SQL代码:   DECLARE @DePtID varchar(10)

admin2013-03-12  27

问题 在SQLServer2000的某数据库中有如下两张关系表:
  学生表(学号,姓名,性别,系号),学号为主码
  系表(系号,系名,系简称),系号为主码
  ①在数据库中执行如下T-SQL代码:
  DECLARE @DePtID varchar(10)
  DECLARE @cnt int
  set @cnt=O
  DECLARE cursor1 cursor FOR SELEET系号FROM系表
  WHERE系名LIKE’%电%’
  OPEN cursorl
  FETCH NEXT FROM cursor1 INTO @DePtID
  WHILE @@FETCH_STATUS=O
  BEGIN
  DECLARE @temp_cnt int
  sELECT @temp_cnt=COUNT(*)FROM学生表WHERE系号=@DeptID
  set @Cnt=@cnt+@temp_cnt
  FETCH NEXT FROM cursor1 INTO ODePtID
  END
  CLOSE cursor1
  DEALLOCATE  cursor1
  SELECT @cnt
  执行过程中发现速度比较慢,为了解决性能问题,需在功能不变的情况下,将此T-SQL代码改为一条SQL语句,请写出此SQL语句(语句中不能含有子查询)并说明为什么此种修改可以提高性能。
  ②设在学生表的(姓名,系号)列上建有一个复合索引,该索引是否有助于提高下列两个语句的查询效率?并说明原因。
  SELECT*FROM学生表 WHERE系号=‘1’;
  SELEET*FRoM学生表WHERE姓名=‘张三’;

选项

答案第一句能,第二局不能,系名的重复率太高,姓名的重复率低。

解析
转载请注明原文地址:https://kaotiyun.com/show/93AZ777K
0

最新回复(0)