sql - 从子查询中选择时是否有任何性能差异?
问题描述
如果我在 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 ...
,我发现执行计划是相似的。所以我假设这两个查询在性能方面没有太大差异。因此,我将像往常一样使用实体框架,而无需编辑复杂的查询。
解决方案
不,没有任何区别。
通过查看使用explain (analyze) select ...
.
除了别名之外,这些计划应该是相同的。
推荐阅读
- r - 每个参与者的引导响应
- macos - snowsql PUT 命令
- scala - 如何使用连接池使 Akka HTTP 达到背压?
- sql - 尝试获取 SUM - 无法对包含聚合或子查询的表达式执行聚合函数
- apache-spark - Spark 退出状态 134. 什么意思
- fix-protocol - GTD 订单实际何时到期
- python - Pandas DF.AT 的值错误
- angular - 在 Angular 9 中,如果您在导航链接指向的 URL 上,如何更改导航链接的 HTMl?
- javascript - JS:股价问题能用两点法吗
- python - 当 __aenter__() 使用 'async with' 失败时会发生什么?