Oracle 空间:SDO_NN 无法在没有索引的情况下进行评估
Oracle spatial: SDO_NN cannot be evaluated without index
我有两个名为 my_nodes
和 restaurants
的 table,它们包含名称和 geoloc
数据。我需要为每个 my_node returns 最近的餐厅和从节点到餐厅的距离获取一个 table。
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'
上面的查询returns:
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 上的人更喜欢在此处 post 编辑代码,但我认为我不会 copy/paste ~200 行代码。如果事实证明 Paul Dziemiela(他在那里写了答案)有所帮助,请随时 post 你的 解决方案,一旦你找到它。祝你好运!
我有两个名为 my_nodes
和 restaurants
的 table,它们包含名称和 geoloc
数据。我需要为每个 my_node returns 最近的餐厅和从节点到餐厅的距离获取一个 table。
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'
上面的查询returns:
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 上的人更喜欢在此处 post 编辑代码,但我认为我不会 copy/paste ~200 行代码。如果事实证明 Paul Dziemiela(他在那里写了答案)有所帮助,请随时 post 你的 解决方案,一旦你找到它。祝你好运!