按此顺序处理SQL:
From,
Where,
Group By,
Having,
Select,
Order By
在新的连接语法(显式使用单词join)中,为什么这比使用旧的连接样式(列出表然后使用where子句)更快?
从之前处理过哪里,那么为什么新的加入方式不会更快?
我想象的方式是这样的: 如果使用旧样式语法,则查看整个表,然后过滤掉结果。
如果您使用新样式语法,则在转到第二步之前先过滤掉结果。
我错过了什么吗?
答案 0 :(得分:2)
当您向postgresql发送查询时,它并不总是以相同的顺序进行扫描,过滤等。它检查查询,涉及的表,可能涉及的任何约束或索引,并提出执行计划。如果要查看查询的执行盘,可以使用{{1}},它将调用计划程序而不实际执行查询。 Here's some documentation for EXPLAIN
您为postgresql标记了您的问题,但其他RDBMS具有类似的工具来检查查询计划。