【问题标题】:Improve performance using geolocation to sort by distance使用地理位置按距离排序提高性能
【发布时间】:2016-10-21 20:34:54
【问题描述】:

我必须构建一个posts 表的结构来处理大量数据(比如说,100 万行),尤其是这两个字段:

  • latitude
  • longitude

我想做的是在按距离排序时优化读取查询所消耗的时间

我选择了这种类型:decimal(精度:10,小数位数:6),认为它比 float 更精确,并且相关。

latitude 上添加索引和在longitude 上添加索引是否合适?

我总是害怕看到 ORM 为构建此类查询而执行的所有操作,例如 SIN()。我想遵循最佳实践,以确保它可以扩展,有很多行的事件。

注意:如果没有通用的解决方案,假设数据库是 MySQL。

谢谢。

【问题讨论】:

  • 数据结构,例如索引,通常是特定于提供商的。请说明您的具体需求(关于数据库类型)
  • 我只是选择了 MySQL 来澄清一下。

标签: mysql sql database bigdata


【解决方案1】:

INDEX(latitude) 会有所帮助。但是要显着加快速度,您需要复杂的数据结构和代码。见my blog

在那里,我指出 6 位小数在分辨率上可能是多余的,除非您试图区分两个站在一起的人。

还有包含处理大圆距离的三角函数的参考代码。

【讨论】:

    猜你喜欢
    • 2015-10-14
    • 2021-02-16
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多