【问题标题】:Most efficient MySQL solution for querying against coordinates用于查询坐标的最有效的 MySQL 解决方案
【发布时间】:2012-08-31 22:12:41
【问题描述】:

我有一个地理定位对象数据库:

  • 身份证
  • 纬度
  • 经度

我正在查询数据库以获取框内的对象:

WHERE longitude >= - 33.83789
  AND longitude <= 33.837891
  AND latitude >= 4.214943
  AND latitude <= 40.979898

有一个索引:latitude, longitude

有没有更高效的方式来存储/查询数据库?目前,根据盒子坐标/对象密度,查询时间从 0.1s 到 1s 以上不等。

我知道MySQL Spacial extension,但使用起来似乎有点麻烦,我不知道它是否会更容易/更高效。

附加信息:我还计划在未来执行简单的基于距离的查询(获取指定位置附近的对象)。

【问题讨论】:

  • 与效率无关,为了可读性使用between and
  • @nawfal 我同意它至少看起来会更好,我没有打扰

标签: mysql geolocation query-optimization spatial-query


【解决方案1】:

有没有更有效的方式来存储/查询数据库?

绝对,是的! Spatial extensions 就是专门为解决这个问题而设计的。

我知道 MySQL Spacial 扩展,但使用起来似乎有点麻烦,我不知道它是否会更容易/更高效。

这并不容易(但也没有很多困难),而且它更有效率。对于大型数据集,它可能会很多更有效率。

【讨论】:

  • 哦,我没想到性能会有这么大的提升,太棒了!只是一个问题,SPATIAL 索引类型是 MySQL Spatial 扩展的一部分吗?或者空间扩展有什么不同?因为SPATIAL 索引在我的情况下似乎很有趣,但我不想(再次)错过 MySQL 空间扩展。
  • @Matthieu:SPATIAL 索引是让它更快的魔法。您还需要更改查询以使用spatial functions 之一。
  • 您能否提供一些示例,数据库管理员应该如何引入和使用这些索引?
猜你喜欢
  • 2013-03-22
  • 1970-01-01
  • 2015-05-13
  • 2021-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
相关资源
最近更新 更多