[SQL ] Nest Query 精進的方法 (空間查詢)

作者: love112302 (小黑炭)   2017-07-05 01:34:46
資料庫名稱: MSSQL
資料庫版本: 2012
內容/問題描述:
Table A:
Columns: geom, type
======================
Table B, field_A, field_B
Columns: geom
======================
目前有兩個表格, 一個是 A, 一個B
我要從A這邊做完第一次篩選之後, 再到B把跟A有交集到的都挑出來
目前我的作法是這樣
WITH points as
(
SELECT geom
FROM A
WHERE type = 'some-type'
)
SELECT *
FROM B
WHERE points.geom.STContains(B.geom) = 1;
GROUP BY B.field_A B.field_B
ORDER BY B.field_B
這樣的成果會有很多重複資料, 所以不得不用 Group by.
想請問有沒有更好的作法
stored procedure 也可以
我嘗試過把 WHERE 改成 JOIN, 但速度上好像沒什麼差異
有其他關鍵字可以提供嗎 感激
作者: smlboby (波比)   2017-07-05 10:24:00
A加distinct,B去掉group by?
作者: flowwinds (..)   2017-07-06 10:11:00
我不懂預存程序 但不知道能不能在裡面做到比如A row1已包含B1/B2/B3了 之後Arow2就跳過B1/B2/B3..

Links booklink

Contact Us: admin [ a t ] ucptt.com