[SQL ] Nest Query 精進的方法 (空間查詢)
資料庫名稱: 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, 但速度上好像沒什麼差異
有其他關鍵字可以提供嗎 感激
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.253.206.44
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1499189689.A.2F3.html
※ 編輯: love112302 (111.253.206.44), 07/05/2017 01:36:31
※ 編輯: love112302 (111.253.206.44), 07/05/2017 01:37:42
→
07/05 10:24, , 1F
07/05 10:24, 1F
Hello, 謝謝您的回覆
如果 B 不加上 group by 會多出很多重複的資料
因為一個 A_row_1 可能包含 B1, B2, B3
但 A_row_2 又可能 再次包含 B1, B2, B3
所以會重複兩次 B1, B2, B3
因為這樣才加上 group by
想請問有辦法避免嗎
※ 編輯: love112302 (111.253.206.44), 07/05/2017 22:23:44
→
07/06 10:11, , 2F
07/06 10:11, 2F
→
07/06 10:12, , 3F
07/06 10:12, 3F
恩 我也是希望有這個方法XD
但我知道為什麼會這麼慢了
MSSQL 在做空間查詢 尤其是 STBuffer 的時候超級慢
改用 STDistance < bufferDistance 就超級快 (攤手
※ 編輯: love112302 (36.235.11.186), 07/06/2017 21:57:26
推
11/16 18:57, , 4F
11/16 18:57, 4F
→
11/16 18:57, , 5F
11/16 18:57, 5F
→
11/16 18:58, , 6F
11/16 18:58, 6F
Database 近期熱門文章
PTT數位生活區 即時熱門文章