我有三个具有相同结构(BATHY_SHC_1, BATHY_SHC_2 and BATHY_SHC_3
)的大表,每个大表都有一个SDO_GEOMETRY
列“ POINT_PP”,每个表的空间索引均为VALID。
我对包含此几何列(V_BATHY_SHC
)的这些表进行了查看。
我可以对视图进行空间请求以找到矩形内的所有点,并获得正确的结果:
SELECT PT_ID, POINT_PP from V_BATHY_SHC
WHERE SDO_RELATE(POINT_PP, MDSYS.SDO_GEOMETRY(2003, 32618, null, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3),MDSYS.SDO_ORDINATE_ARRAY(635267,5037808, 635277,5037818)), 'mask=anyinteract') = 'TRUE';
我已经在表MASK
中上载了多边形MNE_MASK
,并在元数据中添加了一行,并创建了空间索引(通常)。它具有有效的空间索引。几何形状在相同的SRID中(32618)。
然后,我想从视图中获取MNE_MASK
表中多边形内的所有点。如果我在其中一张表上进行查询,则会得到正确的结果:
SELECT A.PT_ID, A.POINT_PP
FROM BATHY_SHC_1 A, MNE_MASK B
WHERE B.MNE_ID = 1
AND SDO_RELATE(A.POINT_PP, B.MASK, 'mask=ANYINTERACT ') = 'TRUE';
但是如果我是在这样的视图上完成的:
SELECT A.PT_ID, A.POINT_PP
FROM V_BATHY_SHC A, MNE_MASK B
WHERE B.MNE_ID = 1
AND SDO_RELATE(A.POINT_PP, B.MASK, 'mask=ANYINTERACT ') = 'TRUE';
我收到此错误:
ORA-13226:没有空间索引时不支持接口 ORA-06512:在“ MDSYS.MD”中,行1723 ORA-06512:位于“ MDSYS.MDERR”的第8行 ORA-06512:位于“ MDSYS.SDO_3GL”的第94行
过去,我总是对多个表的视图的空间索引进行查询,没有问题。
我可以对两者进行空间查询,但不能在两者之间进行SDO_RELATE…
为什么这有什么不同?
非常感谢您的见解和帮助!
编辑: 我找到了一种快速的解决方法,但没有解释原因。 如果我在SDO_RELATE函数中交换了前两个参数,则该请求有效。
SELECT A.PT_ID, A.POINT_PP
FROM V_BATHY_SHC A, MNE_MASK B
WHERE B.MNE_ID = 1
AND SDO_RELATE(B.MASK, A.POINT_PP, 'mask=ANYINTERACT ') = 'TRUE';
答案 0 :(得分:0)
在SDO_RELATE中,第一个参数是表中的几何列,而第二个参数是单个几何。这就是说,我想知道为什么原始查询有效。在那里,您将view列作为第一个参数,就像在失败的查询中一样。