[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