如何使用Myisam和mysql以及空间索引有效地查找点,根据接近度对点进行排序,并获得1-20、21-40等

如何使用Myisam和mysql以及空间索引有效地查找点,根据接近度对点进行排序,并获得1-20、21-40等,mysql,sql,geospatial,myisam,spatial-index,Mysql,Sql,Geospatial,Myisam,Spatial Index,假设我想找到离我最近的20家公司。后者我想看下20个最近的,等等。是的,我有myisam。我在这一点上有空间索引。我正在寻找我应该发送的实际SQL命令 为了说明这一点: 注意: 我正在使用mysql myisam空间索引。我在谷歌上来回搜索,却找不到我真正需要的东西 我不想计算 整张桌子的距离(效率太低)。空间索引的要点是,至少可以有效地去除很多点。如果您左边和上面的一些点不符合条件,那么该点左边和上面的所有点也不符合条件 我不想计算距离 任何仍然效率低下的地区。我感兴趣的区域是10公里,那里有

假设我想找到离我最近的20家公司。后者我想看下20个最近的,等等。是的,我有myisam。我在这一点上有空间索引。我正在寻找我应该发送的实际SQL命令

为了说明这一点:

注意:

  • 我正在使用mysql myisam空间索引。我在谷歌上来回搜索,却找不到我真正需要的东西
  • 我不想计算 整张桌子的距离(效率太低)。空间索引的要点是,至少可以有效地去除很多点。如果您左边和上面的一些点不符合条件,那么该点左边和上面的所有点也不符合条件
  • 我不想计算距离 任何仍然效率低下的地区。我感兴趣的区域是10公里,那里有6.5万家企业
  • 我不介意计算距离 获取合理的点数,因为我想按 距离并能够显示点1-20、21-40、41-60等
  • 我为postgis找到了一种方法,我想要类似的东西,但mysql myisam除外
  • 我想与实际的sql代码作为样本或实际样本sql命令的网站。所以请不要只是说,“使用空间。”嗯。我知道。我想要实际的sql命令
  • 我不想先搜索一个小区域的复杂循环。必须有一个sql命令,它可以在mysql引擎一次有效地完成这项工作
  • 笛卡尔距离很好。没有必要知道我们生活在一个地球上,除非你在北极或南极,而我们的大多数客户都不在北极或南极
  • 有160万个企业。当然,为它们计算距离然后进行排序是愚蠢的

    这就是地理空间索引的作用所在,对吗


    那么我需要发送什么样的SQL命令呢?

    既然我不能对你的问题发表评论,我想我不得不留下这个作为答案

    看看这个问题:


    稍微看看这些文档,MyIsam提供的函数似乎没有一个好的方法来实现这一点

    你是想说我应该迁移到mongodb,因为我的应用程序能够进行空间搜索是绝对重要的。我会搬到波斯吉斯。它似乎直接支持您需要的功能。希望这有帮助。我对地理信息系统的东西不太熟悉,这都是搜索的结果。