PostgreSQL-INNER JOIN vs WHERE,哪个会表现更好?

Dio*_*jos 1 postgresql join where database-performance

我刚刚在网上进行了快速搜索,但找不到确切的所需信息。

INNER JOIN与常规WHERE语句相比有多少效率?

我在PostgreSQL中有几个查询,它们需要使用一些通过键/外键条件“链接”在一起的表(比如说四个或五个)。为了实现这些查询,我使用WHERE子句来连接所有必需的表。

我想知道如果我使用INNER JOIN子句(而不是WHERE子句)重写这些查询,是否会获得性能提升?

Rah*_*hul 5

我认为您的意思是以下查询之间的区别

select a.col1,b.col2 from table1 a, table2 b where a.id = b.id;
Run Code Online (Sandbox Code Playgroud)

反对

select a.col1,b.col2 from table1 a
join table2 b on a.id = b.id;
Run Code Online (Sandbox Code Playgroud)

据我所知,两者都在做一个INNER JOIN;仅仅是上面的是一种旧样式,难以理解,易于出错的隐式连接语法,而下面的一个建议使用显式连接语法。

因此,我在这里看不到任何性能提升/损失;因为无论哪种方式,他们都在执行同一件事。

  • 您可以使用“解释分析”来获取两个查询的执行计划(一个在“where”中连接表,另一个使用“join”语法连接表)并比较两个计划:它们将是相同的,具有相同的操作和记录被过滤。 (2认同)