2011-01-06 40 views

回答

2

尝试这种说法:

select count(*) from geometry_table t where SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE' 
/

这是mandetory说的SDO_RELATE第一个参数是有空间索引几何列。

+0

感谢蒂姆响应。我已经停工了很长一段时间,无法回答你的回答。这完美地执行。 – Abdul 2011-01-12 06:36:31

+0

您可以使用更简单的语法:SDO_INSIDE(t.geom_column,geofence)='TRUE'。它具有完全相同的效果,但写起来更简单。 – 2014-05-16 17:46:40

-1

更新:完全不顾这个建议,阿尔伯特·戈德夫林德说,它正在重复已经在内部完成的工作。所以它效率低,速度慢:

要添加到蒂姆答案,最好是结合SDO_FILTER和SDO_RELATE出于性能原因。 SDO_FILTER速度很快,但返回的太多几何图形,它会为您提供其最小边界矩形(MBR)与栅栏几何体相交的所有几何图形。 SDO_RELATE确切但很慢。 所以结合了:

select count(*) 
from geometry_table t 
where SDO_FILTER(t.geom_column, geofence) = 'TRUE' and SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE' 

的问候,克里斯

+1

对不起,但这是*完全错误*。做你的建议只会让查询运行速度变慢。 SDO_RELATE运算符自动应用“主要过滤器”(即等效于SDO_FILTER运算符)。 – 2014-05-16 17:45:22

+0

哎呀,我还不知道,它一直是这样吗?在这种情况下,我很抱歉,我会编辑我的评论,以免没有人使用我的低效查询。 – cmenke 2014-09-02 14:41:36