[问题4]查询每个部门中月工资最高的“职工号”的SQL查询语句如下: Select职工号 from 职工E where月工资=(Select Max(月工资) from职工as M where M.部门号=E.部门号) (1)请用30字以内文字简要说明该查询语句对查询效率的影响。 (2)对该查询语句进行修改,使它既可以完成相同功能,又可以提高查询效率。
参考答案:
解析:[问题4]解答 此问考查的是查询效率的问题。在涉及相关查询的某些情形中,构造临时关系可以提高查询效率。 (1)对于外层的职工关系E中的每一个元组,都要对内层的整个职工关系M进行检索,因此查询效率不高。 (2)解答一 改正后的SQL语句使用了临时表: Select Max(月工资) as 最高工资,部门号 into Temp from 职工 Group by部门号 Select 职工号 from 职工,Temp where 月工资=最高工资 and 职工,部门号=Temp.部门号 解答二 Select 职工号 from 职工,(Select Max (月工资) as 最高工资,部门号 Group by 部门号)as depMax where 月工资=最高工资 and 职工.部门号=depMax.部门号[问题4]
[分析]: 此问考查的是查询效率的问题。在涉及相关查询的某些情形中,构造临时关系可以提高查询效率。 (1)对于外层的职工关系E中的每一个元组,都要对内层的整个职工关系M进行检索,因此查询效率不高。 (2)此问有两种解法。解答一 改正后的SQL语句使用了临时表: Select Max (月工资) as 最高工资,部门号 into Temp from 职工 Group by 部门号 Select 职工号 from 职工,Temp where 月工资=最高工资 and 职工.部门号=Temp.部门号解答二 Select 职工号 from 职工,(Select Max(月工资) as 最高工资,部门号 Group by部门号)as depMax where月工资;最高工资and职工.部门号;depMax.部门号