我想在MySQL数据库中创建一个with列表:
拥有巨大的行数,按十万至百万行的顺序排列。
如果我想得到表中所选行的最近位置,如何以最快的方式做到这一点?
如果需要更多的信息、索引或预置,这是没有问题的。
======
编辑1:
我读过答案,答案是用一个公式,例如最好的答案:
( sin((geo_latitude
*pi()/180))+cos((".latitude."*pi()/180)) *cos((geo_latitude
*pi(/180)*cos((“.$longitude”)- geo_longitude
)*pi()/180))))*180/pi())*60*1.1515*1.609344)
如果我有一百万行,那就意味着有一百万的计算量。我想会很慢的。
是优化,例如在开始时使用筛选:
如何优化该算法的速度?
====
编辑2:
对不起,我只读了最好的答案。
我在另一个答案中找到了我想要的:http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL
发布于 2013-10-13 22:31:21
你可以用一个四重奏。四边形是像四叉树一样的空间索引。它将点排序成一个网格,然后您可以在中心点周围搜索网格。这并不容易理解,但您可以下载我的php类hilbert-曲线@ phpclasses.org。或者可以使用本机MySQL空间扩展和点数据类型。然而,我的实现使用了一个四键和一个希尔伯特曲线,可以更好。这在很大程度上取决于数据。鱼叉碱公式的问题是它非常慢。但是,您可以同时使用这两种算法来获得更好的结果。
https://stackoverflow.com/questions/19350994
复制相似问题