次のクエリを実行すると:
select B3.bid as id ,B3.bshape as shape
from Buildings B3
where B3.bid in
(
select distinct B1.bid from Buildings B1,
(
select * from Buildings B where B.bname in (select BOF.bname from Buildings_On_Fire BOF)
) B2 where sdo_nn(B1.bshape, B2.bshape, 'distance=100') = 'TRUE' and B1.bname != b2.bname
)
次のエラーが表示されます。
行 1 のエラー:
ORA-13249: インデックスを使用しないと SDO_NN を評価できません
ORA-06512: "MDSYS.MD"、行 1723 ORA- 06512
: "MDSYS.MDERR"、行 17
PRVT_IDX"、9 行目
ただし、次のサブクエリを実行するだけの場合:
select distinct B1.bid from Buildings B1,
(
select * from Buildings B where B.bname in (select BOF.bname from Buildings_On_Fire BOF)
) B2 where sdo_nn(B1.bshape, B2.bshape, 'distance=100') = 'TRUE' and B1.bname != b2.bname
これはうまく実行されました。空間インデックスを確認しましたが、有効なようです。
私はオラクルが初めてで、次に何をすべきかわかりません。助けてください。
上記のクエリを変更する必要のない解決策がある場合は、それが最適です。