我有2张桌子: - 第一个包含空间数据 - 圆的几何 - 第二个包含线的几何。
我想找到每个圆圈内的所有线条。我有一个查询可以做到这一点,但有数百万条记录,所以它非常慢。 两个表中都有一个列是area_id,基本上所有圆都分配给特定区域和所有行,所以如果我可以只用匹配区域中的线与圆相交,这将减少加载很多。问题是我无法想到解决方案,例如使用窗口函数。我正在使用的查询是:
Select ct.AREA_ID, ct.Circle_descr, lt.Line_descr from circles_table as ct
JOIN lines_table as lt
ON
circles_table.Circle_location.STIntersects(points_table.Point_location)=1
*在最后使用where子句没有区别,因为它基本上是慢速连接的一部分......
+---------------+----------------------+--------------------------+
| AREA_ID (int) | Circle_descr(varchar) | Circle_location(geometry)|
+---------------+----------------------+--------------------------+
+---------------+---------------------+-------------------------+
| AREA_ID (int) | Line_descr(varchar) | Line_location(geometry) |
+---------------+---------------------+-------------------------+
答案 0 :(得分:0)
添加其他连接标准,以便在比较之前按area_id对行进行分区。像
这样的东西Select ct.AREA_ID, ct.Circle_descr, lt.Line_descr
from circles_table as ct
JOIN lines_table as lt
ON ct.Circle_location.STIntersects(lt.Point_location)=1
AND ct.area_id = lt.area_id