【发布时间】:2017-10-31 18:30:03
【问题描述】:
Oracle 有一个名为SDO_JOIN 的表函数,用于根据空间关系连接表。查找房屋所在社区的示例查询如下所示:
select
house.address,
neighbourhood.name
from table(sdo_join('HOUSE', 'GEOMETRY', 'NEIGHBOURHOOD', 'GEOMETRY', 'mask=INSIDE')) a
inner join house
on a.rowid1 = house.rowid
inner join neighbourhood
on a.rowid2 = neighbourhood.rowid;
但我只需在 on 子句中使用空间关系进行常规连接即可得到相同的结果:
select
house.address,
neighbourhood.name
from house
inner join neighbourhood
on sdo_inside(house.geometry, neighbourhood.geometry) = 'TRUE';
我更喜欢第二种方法,因为我认为它更容易理解到底发生了什么,但我无法找到任何关于这是否是进行空间连接的正确方法的 Oracle 文档。
这两种方法有什么区别吗?如果有,是什么?如果没有,哪种风格更常见?
【问题讨论】:
标签: oracle11g spatial-query oracle-spatial