Perbedaan antara SpatialJoin dengan "... where ..." dan "join ... on ..."

9

Saya bertanya-tanya di mana perbedaan antara dua gabungan spasial ini dan, jika ada perbedaan, kapan menggunakannya.

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

dan

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

Apakah seseorang lebih cepat dalam situasi tertentu?

Stophface
sumber
1
Perbedaannya adalah gaya, tetapi ketika tugas Anda diperluas untuk bergabung dengan dua belas hingga lima belas tabel, Anda akan melihat mengapa coders SQL berpengalaman menggunakan JOINsecara eksklusif. Sayangnya, seperti yang ditulis, ini lebih merupakan pertanyaan SQL murni, dan umpan opini pada saat itu.
Vince

Jawaban:

4

Tidak ada perbedaan untuk kedua pernyataan tersebut. Postgresql mengonversi keduanya ke paket kueri yang sama. Anda dapat melihat paket hanya dengan menambahkan EXPLAIN ANALYZEsebelum pilih dan mencari hasilnya.

Roman Tkachuk
sumber
Apakah yang satu dianggap lebih cepat dari yang lain?
Stophface
pasti tidak. Postgresql mengonversi keduanya ke paket kueri yang sama. Anda dapat melihat paket hanya dengan menambahkan EXPLAIN ANALYZEsebelum pilih dan mencari hasilnya.
Roman Tkachuk
6
Saya lebih suka GABUNG karena terlalu mudah melupakan kondisi ketika dicampur di MANA. Juga dengan pendekatan GABUNG, Anda dapat menggunakan KIRI untuk misalnya menemukan poin yang tidak dalam bentuk apa pun. Anda tidak dapat melakukannya dengan WHERE
LR1234567