【问题标题】:Do I really need to use MySQL Spatial Functions?我真的需要使用 MySQL 空间函数吗?
【发布时间】:2012-09-11 02:58:50
【问题描述】:

我想听听你对这个案子的意见:

我需要一个包含...最多两个或三个表的数据库,其中一个包含点(纬度、经度)和其他一些信息。

我需要的真的很简单:获取给定半径内的点。

我不是在问怎么做(但是任何建议都非常受欢迎,特别是关于良好实践的建议),我想知道使用 MySQL 的空间支持是否会有所帮助.由于只需一个查询即可轻松获得所需的内容,因此我期望通过使用 Spatial 支持来提高性能。

那么,空间索引是否会有显着的帮助?我不认为该表会存储那么多点。我会说不超过 200 个。

【问题讨论】:

  • 您对使用这些功能的主要关注点是什么?
  • 只是如果我真的不需要它们,我不想使用它们。你知道,我们通常不想用大炮杀死苍蝇。

标签: mysql geolocation spatial-index


【解决方案1】:

如果真的只有 200 分,我建议你不要这样做:这使得编写可移植 SQL 变得更加容易(我认为这很重要)。

编写您的 SQL,首先根据预先计算的最小值和最大值(给您一个矩形)检查经度和纬度,然后检查半径。这样,您只需要计算半径,而无需最终选择结果集的 1/pi 的点。

我个人认为这是一个可以接受的与编写 SQL 的权衡,如果必须对 SQlite 或其他什么执行。

【讨论】:

  • 请注意,当您靠近两极时,纬度的大小会发生变化。如果您处理的是最北端或最南端的位置(例如阿拉斯加或阿根廷南部),这可能会导致一些严重的错误。
  • 这就是我的意思,首先检查最小值和最大值,然后真正计算半径:在两极附近你会得到更多的“第一阶段误报”,但它们会在第二阶段被排除.
  • 非常感谢您的观点,Eugen。虽然我同意你关于可移植 SQL 很重要的观点,但情况并非如此,因为我们坚持使用 MySQL,并且认为这不会改变。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2012-03-13
  • 2020-01-29
  • 2011-01-28
  • 1970-01-01
  • 2018-09-29
  • 1970-01-01
相关资源
最近更新 更多