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?


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.