【问题标题】:function based index XY coordinates基于函数的索引 XY 坐标
【发布时间】:2016-10-20 00:22:43
【问题描述】:

我有一个查询,它返回距离一组 XY 坐标最远的Sighting_id。我试图在 XY 坐标上创建基于函数的索引以加快查询速度,我看到了如何为包含字符串的字段构建索引,但我不确定如何在 xy 坐标上构建。

目击的模式(sighting_id(pk)、spotter_id、bird_id、纬度、经度、日期、描述)

WITH params as (SELECT -28 as lat, 151 as lon
              FROM dual)
SELECT sighting_id, sqrt(power(lat - latitude, 2) + power(lon - longitude,  2)) 

AS distance FROM sightings CROSS JOIN params

WHERE sqrt(power(lat - latitude, 2) + power(lon - longitude, 2)) =

(SELECT MAX(sqrt(power(lat - latitude, 2) + power(lon - longitude, 2)))

FROM sightings CROSS JOIN params);

【问题讨论】:

    标签: sql oracle function indexing


    【解决方案1】:

    一般来说,传统的索引在比较坐标数据时效果很差,因为您可以在两个或多个方向上靠近(或远)。如果您的距离覆盖了地球的很大一部分,并且您必须适应曲面而不是将空间视为平坦的,那么情况会变得更加复杂。

    如果您要定期查询任何显着规模的数据集,请阅读适用于您的 Oracle 版本的 Oracle Spatial 指南,注意Appendix B(其中涵盖了您无需付费即可使用的许可额外选项)和indexing

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多