oracle - 使用 SDO_CONTAINS 的 Oracle Spatial Query 结果不一致
问题描述
如果我运行以下查询:
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 Release 11.2.0.2.0 - 64bit Production
解决方案
显然某处存在错误。如果我运行:
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
:-(
推荐阅读
- java - javafx中的线程
- sql - SQL - 根据 2 个日期之间的天数从 1 个记录创建多个记录
- python - 在 conda 虚拟环境中以 pip 兼容格式创建 requirements.txt
- javascript - Bookshelf.js fetchAll() 性能
- r - 如何更正箱线图的标签获取 R 中每对的 p 值
- scala - Scala递归api调用
- excel - 使用 MSHTML.HTMLDocument 时强制 documentMode
- r - knitr 中的数字大小与拼凑或牛图
- amazon-web-services - AWS 生命周期管理器将其作为备份的快照保存在哪里
- powershell - 在扫描 TCP 和 UDP 端口脚本中缺少成员的 psobjects 数组