使用SDO_包含的Oracle空间查询的不一致结果

使用SDO_包含的Oracle空间查询的不一致结果,oracle,spatial,oracle11gr2,spatial-query,oracle-spatial,Oracle,Spatial,Oracle11gr2,Spatial Query,Oracle Spatial,如果我运行以下查询: select zona , fid , count(*) from geo_bcn_zones z join geo_bcn_illes i on SDO_CONTAINS(z.geometria, i.geometria) = 'TRUE' where zona='z01'and fid = 53 group by zona, fid 我得到了以下结果: zona fid count(*) z01 53 34 但如果我运行另一个:

如果我运行以下查询:

select zona
 , fid
 , count(*)
from geo_bcn_zones z join geo_bcn_illes i 
  on SDO_CONTAINS(z.geometria, i.geometria) = 'TRUE'
where zona='z01'and fid = 53
group by zona, fid
我得到了以下结果:

 zona   fid count(*)
 z01    53  34      
但如果我运行另一个:

select zona
     , fid
     , count(*)
from geo_bcn_zones z
join geo_bcn_illes i 
on SDO_CONTAINS(z.geometria, i.geometria) = 'TRUE'
where zona='z01'
group by zona, fid
having fid = 53
结果不一致:

 zona   fid count(*)
 z01    53  10      
有什么建议吗


我正在运行Oracle Database 11g Express Edition 11.2.0.2.0版-64位生产版

显然,某个地方有一个bug。如果我跑步:

select zona, fid, count(*)
from geo_bcn_zones z, geo_bcn_illes i 
where sdo_contains(z.geometria, i.geometria) = 'TRUE'
and zona = 'z01' and fid = '53'
group by zona, fid
结果是:

zona fid count(*)
z01 53  10
如果我添加命中以避免索引:

select /*+NO_INDEX(z, idx_geo_bcn_zones) */  zona, fid, count(*)
from geo_bcn_zones z, geo_bcn_illes i 
where sdo_contains(z.geometria, i.geometria) = 'TRUE'
and zona = 'z01' and fid = '53'
group by zona, fid
结果是正确的:

zona fid count(*)
z01 53  34

:-(

很难说。可能是无效数据(如方向错误的多边形)。如果没有实际数据,就不可能说。可能会显示两次执行的查询计划,这会提供线索吗?