我有一个 MySQL 记录表,每个记录都有一个 lat/lng 坐标。根据中心点和半径对这些数据进行搜索(返回半径内的任何记录)。我正在使用余弦球面定律来计算查询中的距离。我的问题是索引地理数据的效率非常低(纬度/经度值存储为浮点数)。使用 MySQL 的空间扩展不是一种选择。对于大约 100k 大小的数据集,查询需要不合理的时间来执行。
我做了一些研究,似乎使用 z-index 即莫顿数可能会有所帮助。我可以计算插入时每条记录的莫顿数,然后根据地球的半径/中心点/给定的搜索半径计算边界框的高/低莫顿值。
我对这些东西的了解只够构建我的应用程序,所以我不完全确定这是否可行,而且我也不知道如何在 PHP 中计算莫顿数。这会是按位运算吗?