我正在研究PHP & MySql应用程序。这里是我有和正在尝试做的:基于距离的搜索和排序
我有一个机构配置文件,其中包含机构名称,邮政编码,region_id,类别和其他详细信息表。用户可以根据region_id和类别搜索一个机构。我可以SELECT * FROM TABLE WHERE category = 1 and region_id = 1
。然后,我需要根据距邮政编码升序的用户距离对结果集进行排序。我有一个算法,将用户postal_code转换为latlong,并找到每个机构的距离(对于表中的每个机构,我都有很长的距离)。
问题是我的桌子很大。当我在上面的场景中搜索时,结果集包含大约1000行。然后,我必须从用户postal_code中找到每行的距离,然后对其进行排序。现在,它在我的本地速度很快,但我确信当它开始运行时,搜索,计算和排序需要很长时间。然后,我想通过一次显示10个结果来解决问题,但是很明显,这并不能解决问题,因为我仍然必须计算距离并进行排序,然后才能显示结果。
您认为最好的解决方法是什么?我正在考虑按照lat的升序进行搜索,但由于lat的长度不是线性的,所以这没有意义。邮政编码是加拿大的。我不知道我能否以某种方式利用它。
让我知道你们的想法。谢谢。
这取决于你计算距离的方式。如果您可以在不对每次比较运行额外查询的情况下执行此操作(在这种情况下您应该可以执行此操作),那么对服务器排序1000行对于您而言无关紧要,您无需担心。 – Vatev