SpatialJoinと「…where…」および「join…on…」の違い


9

これらの2つの空間結合の違いはどこにあるのでしょうか。違いがある場合は、いつ使用するのでしょうか。

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つ速くなりますか?


1
違いは文体的ですが、タスクが12から15のテーブルの結合に拡大すると、経験豊富なSQLコーダーがJOIN排他的に使用する理由がわかります。残念ながら、書かれているように、これはより純粋なSQLの質問であり、それに対する意見の餌となります。
Vince

回答:


4

両方のステートメントに違いはありません。Postgresqlは両方を同じクエリプランに変換します。あなたはEXPLAIN ANALYZEあなたの選択の前に追加して結果を探すだけで計画を見ることができます。


一方が他方より速いと考えられていますか?
Stophface 2017

いいえでなければなりません。Postgresqlは両方を同じクエリプランに変換します。あなたはEXPLAIN ANALYZEあなたの選択の前に追加して結果を探すだけで計画を見ることができます。
ローマトカチュク2017

6
WHEREで混合すると、条件を忘れるのが簡単なので、JOINを選択します。また、JOINアプローチでは、LEFTを使用して、たとえば、どの形状内にもないポイントを見つけることができます。WHEREでそれを行うことはできません
LR1234567
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.