了解 EF Core SQL 查询翻译

问题描述 投票:0回答:1

我有关于 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,然后过滤,还是只是语法糖?

sql postgresql entity-framework-core npgsql .net-7.0
1个回答
0
投票

这两个查询在功能方面是等效的,并且决定哪个更有效主要取决于特定的数据库引擎及其查询优化器。实际上,数据库引擎应该能够优化这两个查询以获得相似的性能。因此,您可以为您的代码选择更易于理解和维护的查询形式,并将优化留给数据库引擎。

© www.soinside.com 2019 - 2024. All rights reserved.