A-A+

工厂的信息管理数据库中有两个关系模式: 职工(职工号 姓名 年龄 月工资 部门号 电话 办公

2022-08-05 21:09:13 问答库 阅读 172 次

问题详情

工厂的信息管理数据库中有两个关系模式:
职工(职工号,姓名,年龄,月工资,部门号,电话,办公室)
部门(部门号,部门名,负责人代码,任职时间)
查询每个部门中月工资最高的“职工号”的SQL查询语句如下:
SELECT 职工号 FROM 职工 E
WHERE 月工资=(SELECT MAX(月工资)
FROM 职工 AS M
WHERE M.部门号=E.部门号);
①请用30字以内的文字简要说明该查询语句对查询效率的影响。
②对该查询语句进行修改,使它既可以完成相同功能,又可以提高查询效率。请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:此问考查的是查询效率的问题。在涉及相关查询的某些情形中构造临时。关系可以提高查询效率。①对于外层的职工关系E中的每一个元组都要对内层的整个职工关系M进行检索因此查询效率不高。②解答方法一 (先把每个部门最高工资的数据存入临时表再对临时表进行查询):SELECT MAX (月工资) As最高工资部门号 Into Temp FROM 职工GROUP BY 部门号;SELECT 职工号 FROM 职工TempWHERE 月工资=最高工资 AND职工.部门号=Temp.部门号;解答方法二 (直接在FROM子句中使用临时表结构):SELECT 职工号FROM职工(SELECT MAX(月工资) As最高工资部门号FROM 职工GROUP BY 部门号) As depMaxWHERE 月工资=最高工资 AND职工.部门号=depMax.部门号;
此问考查的是查询效率的问题。在涉及相关查询的某些情形中,构造临时。关系可以提高查询效率。①对于外层的职工关系E中的每一个元组,都要对内层的整个职工关系M进行检索,因此查询效率不高。②解答方法一 (先把每个部门最高工资的数据存入临时表,再对临时表进行查询):SELECT MAX (月工资) As最高工资,部门号 Into Temp FROM 职工GROUP BY 部门号;SELECT 职工号 FROM 职工,TempWHERE 月工资=最高工资 AND职工.部门号=Temp.部门号;解答方法二 (直接在FROM子句中使用临时表结构):SELECT 职工号FROM职工,(SELECT MAX(月工资) As最高工资,部门号FROM 职工GROUP BY 部门号) As depMaxWHERE 月工资=最高工资 AND职工.部门号=depMax.部门号;

考点:职工,月工资