子查询 vs INNER JOIN
通常,相关子查询 的结果可以用 INNER JOIN 来复现。根据您的需求,使用 INNER JOIN 可能更高效,因为它只需对数据进行一次扫描,而 相关子查询 需要对外层查询的每一行分别执行。
您想要找出世界上每个国家中最大城市在 2017 年的人口。您可以从 Earthquakes 数据库中获取这些信息,其中外层查询使用 Nations 表,子查询使用 Cities 表。
您将先把这个查询写成一个 相关子查询,然后再用 INNER JOIN 重写。
本练习是课程的一部分
改进 SQL Server 中的查询性能
交互式实操练习
通过完成这段示例代码来试试这个练习。
SELECT
n.CountryName,
(SELECT MAX(c.___) -- Add 2017 population column
FROM Cities AS c
-- Outer query country code column
WHERE c.CountryCode = n.___) AS BiggestCity
FROM ___ AS n; -- Outer query table