2011-01-06 64 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