SpatialJoin和“…where…”和“ join…on…”之间的区别


9

我想知道这两个空间连接之间的区别在哪里,如果有区别,什么时候使用。

SELECT *
FROM points p, shapes s
WHERE ST_Within(p.geom, s.geom);

SELECT *
FROM points p
INNER JOIN shapes s ON ST_Within(p.geom, s.geom)

在某些情况下速度更快吗?


1
区别是风格上的,但是当您的任务扩展到连接十二到十五张表时,您将了解为什么有经验的SQL编码员JOIN专门使用。不幸的是,写的,这更是一个纯粹的SQL问题,并认为在这个诱饵。
文斯

Answers:


4

两种说法没有区别。Postgresql将它们都转换为相同的查询计划。您可以通过EXPLAIN ANALYZE在选择之前添加并查看结果来查看计划。


一个被认为比另一个更快吗?
Stophface '17

一定不能。Postgresql将它们都转换为相同的查询计划。您可以通过EXPLAIN ANALYZE在选择之前添加并查看结果来查看计划。
Roman Tkachuk

6
我更喜欢JOIN,因为在WHERE中混合时很容易忘记条件。同样,通过JOIN方法,您可以使用LEFT来查找不在任何形状内的点。您无法使用WHERE做到这一点
LR1234567'2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.