![](/img/trans.png)
[英]oracle sql clarification to use case condition in where clause, error sdo_nn cannot be evaluated without an index
[英]Oracle spatial: SDO_NN cannot be evaluated without index
我有兩個名為my_nodes
表和包含名稱和geoloc
數據的restaurants
。 我需要得到一張表,為每個 my_node 返回最近的餐廳和節點到餐廳的距離。
select n.node_id, r.r_name , sdo_nn_distance(1) as min_distance from
(select nodeid as node_id, geoloc from my_nodes@my_server ) n,
(select r_name, GEOLOC from restaurants) r
where sdo_nn (n.geoloc, r.GEOLOC, 'Unit = MILE sdo_num_res = 1', 1) = 'TRUE'
上面的查詢返回:
ORA-13249: SDO_NN cannot be evaluated without using index
ORA-06512: at "MDSYS.MD", line 1723
ORA-06512: at "MDSYS.MDERR", line 17
ORA-06512: at "MDSYS.PRVT_IDX", line 9
如何解決?
你創建索引了嗎? 如果沒有,語法將是這樣的:
CREATE INDEX whichever_name_you_want
ON table_name_here (sdo_geometry_column_name_here)
INDEXTYPE IS MDSYS.SPATIAL_INDEX;
由於我不是特別擅長空間,請查看此 OTN 論壇討論: https : //community.oracle.com/thread/3696687? start =0& tstart =0 ; 你可能會覺得很有趣。
盡管 Stack Overflow 上的人們更喜歡在這里發布代碼,但我想我不會復制/粘貼大約 200 行代碼。 如果結果證明 Paul Dziemiela(在那里寫了答案)有所幫助,請隨時發布您的解決方案。 祝你好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.