有两张关系表: Students(SID, SName, Sex, Dept) Prizing(SID, PName, Type, PDate) Students表描述的是学生基本信息,Prizing表描述的是学生获奖信息。 ①若在应用程序中经常使用以下查询语句: SELECT S. SID,SName,PName,Type FROM Students AS S JOIN Prizing AS P ON S.SID=P. SID 请问能否使用聚集文件提高此查询的性能并给出原因。 ②为了提高查询性能,数据库管理员在Students表的SName列上建立了一个非聚集索引SName_ind。如果应用程序使用如下语句查询数据: SELECT* FROM Students WHERE SName like‘%华’ 请问SName_ind索引是否能够提高语句的查询速度,并给出原因。
参考答案:
①可以用聚集文件提高此查询性能。因为聚集文件本身存储不同类型表的联系,能够减少表间的连接操作,提高查询性能。 ②此索引不能提高该语句的查询速度。因为该索引是建立在SNAME上的非聚集索引,以SNAME首字母排序,而查询语句却要求查询名字最后一个是“华”的SNAME,还是需要全部扫描students表,因此不能提高该语句的查询速度。
解析:
本题考查的是优化查询速度的方法等。聚集文件本身存储不同类型表的联系,能够减少表间的连接操作,提高查询性能。而非聚集索引,对于以SNAME首字母排序时有效。