甲骨文空间:SDO_NN不能没有索引来评估

问题描述 投票:1回答:1

我有两个表名为my_nodesrestaurants包含名称和geoloc数据。我需要为每个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

如何解决呢?

sql oracle distance nearest-neighbor
1个回答
1
投票

你创建一个索引?如果不是,语法将是这样的:

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;你会觉得很有趣。

尽管人们对堆栈溢出喜欢这里被张贴代码,我想我不会去复制/粘贴〜200行代码。如果事实证明,保罗Dziemiela(谁写的答案有)的帮助下,随意张贴您的解决方案,一旦你达到它。祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.