【问题标题】:PostgreSQL - INNER JOIN vs WHERE, which one will perform better?PostgreSQL - INNER JOIN 与 WHERE,哪个性能更好?
【发布时间】:2015-01-09 07:22:08
【问题描述】:

我刚刚在网络上进行了快速搜索,但找不到我正在寻找的确切内容。

INNER JOIN 与常规 WHERE 语句相比效率如何?

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

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

【问题讨论】:

  • 只比较查询计划:它们完全一样。

标签: postgresql join where database-performance


【解决方案1】:

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

select a.col1,b.col2 from table1 a, table2 b where a.id = b.id;

反对

select a.col1,b.col2 from table1 a
join table2 b on a.id = b.id;

据我所知,两者都在做INNER JOIN;只是上面那个是老风格,难读,容易出错的隐式连接语法,下面这个是推荐的显式连接语法。

所以,我在这里看不到任何性能增益/损失;因为无论哪种方式,他们都在做同样的事情。

【讨论】:

  • 是的,完全正确。这个例子很好地解释了我的问题的重点。我只是想确保优化器将这两个查询实现转换为相同的查询计划,这将使两个实现执行相同。
  • 是的,因为它们本质上是相同的。
  • 您可以使用explain analyze 来获取两个查询的执行计划(一个以where 连接表,另一个以join 语法连接表)并比较两个计划:他们将是相同的,过滤相同的操作和记录。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-11
  • 2017-11-30
  • 2019-01-15
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
相关资源
最近更新 更多