老与新风格联手

时间:2016-06-18 02:08:11

标签: postgresql join

按此顺序处理SQL:

From,
Where,
Group By,
Having,
Select,
Order By

在新的连接语法(显式使用单词join)中,为什么这比使用旧的连接样式(列出表然后使用where子句)更快?

从之前处理过哪里,那么为什么新的加入方式不会更快?

我想象的方式是这样的: 如果使用旧样式语法,则查看整个表,然后过滤掉结果。

如果您使用新样式语法,则在转到第二步之前先过滤掉结果。

我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

当您向postgresql发送查询时,它并不总是以相同的顺序进行扫描,过滤等。它检查查询,涉及的表,可能涉及的任何约束或索引,并提出执行计划。如果要查看查询的执行盘,可以使用{{1}},它将调用计划程序而不实际执行查询。 Here's some documentation for EXPLAIN

您为postgresql标记了您的问题,但其他RDBMS具有类似的工具来检查查询计划。