gpt4 book ai didi

php - 如何按距离排序数据库结果?

转载 作者:行者123 更新时间:2023-11-30 23:12:32 25 4
gpt4 key购买 nike

我想根据到对象的距离对数据库中的结果进行排序。我的对象和我的数据库项都有 latlng,我可以用 haversine 计算距离。

问题是需要根据与数据库的距离来选择它们。我无法提取整个数据库,进行计算,然后得出我需要的结果,因为......每次我这样做都会死一只小猫

  • 有些人建议将 haversine 公式放在 order_by 中。如何许多小猫会死吗?

  • 有些人建议使用某种空间插件。他们在做什么?我应该使用哪一个?

  • 另一种看起来很丑陋的替代方法是,您通过排除 latlng 中所有较大和较小的东西来手动移动一段距离并制作一个正方形。如果您没有足够的结果,或者结果太多,您可以更正距离并再次运行查询。

谁能告诉我最好的方法是什么?我也在 CakePHP 中使用 LAMP/MAMP。

最佳答案

同时使用:

WHERE table.latitude BETWEEN $latmin AND $latmax
AND table.longitude BETWEEN $lonmin AND $lonmax
ORDER BY haversine(....)
HAVING haversine(...) < $your_desired_distance

它仍然是一个繁重的排序,但是你已经用非常简单/轻量级的 WHERE 过滤器消除了任何“明显的”超出范围的候选人,所以您将对所有可能记录的一小部分(呃?)进行实际距离计算。

关于php - 如何按距离排序数据库结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19252120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com