Sự khác biệt giữa SpatialJoin với Mạnh, trong đó, phạm vi và phạm lỗi với nhau


9

Tôi tự hỏi sự khác biệt giữa hai liên kết không gian này là ở đâu và, nếu có sự khác biệt, khi nào nên sử dụng.

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)

Là một trong những tình huống nhanh hơn?


1
Sự khác biệt là theo phong cách, nhưng khi các nhiệm vụ của bạn mở rộng để tham gia mười hai đến mười lăm bảng, bạn sẽ thấy lý do tại sao các lập trình viên SQL có kinh nghiệm sử dụng JOINriêng. Thật không may, như đã viết, đây là một câu hỏi SQL thuần túy và mồi câu ý kiến ở đó.
Vince

Câu trả lời:


4

Không có một sự khác biệt cho cả hai tuyên bố. Postgresql chuyển đổi cả hai sang cùng một kế hoạch truy vấn. Bạn có thể xem các gói bằng cách chỉ cần thêm EXPLAIN ANALYZEtrước khi chọn và tìm kết quả.


cái này được coi là nhanh hơn cái kia?
Stophface

phải là không Postgresql chuyển đổi cả hai sang cùng một kế hoạch truy vấn. Bạn có thể xem các gói bằng cách chỉ cần thêm EXPLAIN ANALYZEtrước khi chọn và tìm kết quả.
Roman Tkachuk

6
Tôi thích THAM GIA vì quá dễ để quên điều kiện khi trộn trong WHERE. Ngoài ra với phương pháp THAM GIA, bạn có thể sử dụng TRÁI ví dụ để tìm các điểm không nằm trong bất kỳ hình dạng nào. Bạn không thể làm điều đó với WHERE
LR1234567
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.