首页 > 解决方案 > 从子查询中选择时是否有任何性能差异?

问题描述

如果我在 Postgresql 中运行这些查询,会有任何性能差异吗?假设表有很多行。

SELECT c.name 
FROM products as p
JOIN category as c on p.type = c.type 
WHERE c.name = 'a';

SELECT a.name 
FROM (
  SELECT c.name 
  FROM products as p
  JOIN category as c on p.type = c.type
) as a 
WHERE a.name = 'a';

** 已编辑

使用实体框架 linq,像这样,

context.table.FromSql("complex query from random developer").Where(a => ....)

将创建类似于第二个查询的查询,(从子查询查询)

在 SQL Server 中,两者都将返回相同的执行计划,但我是 Postgresql 的新手,我不知道如何测试它。

按照建议在Postgresql中使用后explain (analyze) SELECT ...,我发现执行计划是相似的。所以我假设这两个查询在性能方面没有太大差异。因此,我将像往常一样使用实体框架,而无需编辑复杂的查询。

标签: sqlpostgresqlentity-framework.net-core

解决方案


不,没有任何区别。

通过查看使用explain (analyze) select ....

除了别名之外,这些计划应该是相同的。


推荐阅读