我有关于 EF Core 翻译的疑问,该查询是否已优化?
SELECT
e."EmployeeId",
e."PositionId",
t."Name"
FROM
"Employee" AS e
INNER JOIN
(SELECT
m."PositionId",
m."Name"
FROM
"MasterPosition" AS m
WHERE
NOT (m."IsDeleted")) AS t ON e."PositionId" = t."PositionId"
和这个一样吗?
SELECT
e."EmployeeId",
e."PositionId",
MP."Name" as "PositionName"
FROM
"Employee" e
INNER JOIN
public."MasterPosition" MP ON MP."PositionId" = e."PositionId"
WHERE
NOT e."IsDeleted"
我对
INNER JOIN (SELECT)
部分有点困惑,他们是获取所有masterPosition,然后过滤,还是只是语法糖?
这两个查询在功能方面是等效的,并且决定哪个更有效主要取决于特定的数据库引擎及其查询优化器。实际上,数据库引擎应该能够优化这两个查询以获得相似的性能。因此,您可以为您的代码选择更易于理解和维护的查询形式,并将优化留给数据库引擎。