Пространственный Oracle: SDO_NN не может быть оценен без индекса - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть две таблицы с именами my_nodes и restaurants, которые содержат имя и 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

Как это исправить?

1 Ответ

0 голосов
/ 02 февраля 2019

Вы создали индекс?Если нет, то синтаксис был бы таким:

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 строк кода.Если окажется, что Пол Дзиемела (который написал ответ там) помог, не стесняйтесь опубликовать ваше решение, как только вы его достигнете.Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...