SpatialJoin ile “… nerede…” ve “katıl… on…” arasındaki fark


9

Bu iki uzamsal birleşim arasındaki farkın nerede olduğunu ve bir fark varsa, ne zaman kullanılacağını merak ediyorum.

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

ve

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

Bazı durumlarda daha hızlı mı?


1
Fark stilistiktir, ancak görevleriniz on iki ila on beş tabloya katılmaya genişlediğinde, deneyimli SQL kodlayıcılarının neden JOINyalnızca kullanıldığını göreceksiniz . Ne yazık ki, yazıldığı gibi, bu daha saf bir SQL sorusudur ve bu konuda fikir yemidir.
Vince

Yanıtlar:


4

Her iki ifade için de hiçbir fark yok. Postgresql her ikisini de aynı sorgu planına dönüştürür. Planları, seçiminizden EXPLAIN ANALYZEönce ekleyerek ve sonuç arayarak görebilirsiniz.


biri diğerinden daha hızlı sayılır mı?
Stophface

hayır olmalı. Postgresql her ikisini de aynı sorgu planına dönüştürür. Planları, seçiminizden EXPLAIN ANALYZEönce ekleyerek ve sonuç arayarak görebilirsiniz.
Roman Tkachuk

6
JOIN'ı tercih ediyorum çünkü NEREDE karıştırıldığında durumu unutmak çok kolay. Ayrıca JOIN yaklaşımıyla, örneğin herhangi bir şekil içinde olmayan noktaları bulmak için bir SOL kullanabilirsiniz. Bunu NEREDE
LR1234567
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.