web-dev-qa-db-ja.com

ORA-13249:索引を使用せずにSDO_NNを評価できません

Oracleで次のSQLスクリプトを実行するとエラーが発生します。

SELECT D.ID
FROM  DOOR D
JOIN STREET S ON (S.ID=D.STREET_ID)
WHERE 
SDO_NN(D.LOCATION,SDO_UTIL.FROM_WKTGEOMETRY('POINT (11112.0111 321314.2222)'),'sdo_num_res=6') = 'TRUE'
or 
S.ID IN (17);
 _

しかし、 'または'を'そして 'またはdelete'を変更したときまたは(17)のs.id "エラーが発生しません。

SELECT D.ID
FROM  DOOR D
JOIN STREET S ON (S.ID=D.STREET_ID)
WHERE 
SDO_NN(D.LOCATION,SDO_UTIL.FROM_WKTGEOMETRY('POINT (11112.0111 321314.2222)'),'sdo_num_res=6') = 'TRUE'
and 
S.ID IN (17);
 _

型の種類場所フィールドin[〜#〜]ドア[〜#〜]テーブルはmdsys.sdo_geometry

[〜#〜] ID [〜#〜]フィールドin [〜#〜] Street [〜#〜]テーブルは[〜#〜#〜#〜#〜 ]番号[〜#〜]

最初のSQLが働きたいソリューションに役立つことができますか?

3
Resul Zoroğlu

ヒントは良いことをしますか?

SELECT /*+ LEADING(d) USE_NL(d s) INDEX s spatial_index) */
       D.ID
  FROM DOOR D JOIN STREET S ON (S.ID = D.STREET_ID)
 WHERE     SDO_NN (
              D.LOCATION,
              SDO_UTIL.FROM_WKTGEOMETRY ('POINT (11112.0111 321314.2222)'),
              'sdo_num_res=6') =
           'TRUE'
       AND S.ID IN (17);
 _
1
Littlefoot