【排序策略】GPS搜索附近的人

背景描述:
一个用户提供其经纬度,后台在数据库里查询经纬度最近的(假设一百个)人

问题描述:
1、假设不分表,所有用户在一个表,那么如果用户超多,假设一亿条。我得全取出来再计算距离,再排序(内存排序还不一定能搞定,因为数据太多)。而且,用不到数据库的自身排序功能,工作量全转移到业务层了。有什么好的方法吗?比如,又没有缩小待排序范围的技巧?

2、如果分表呢?抛开上个问题,怎么排序?假设数据根据用户名,哈希到5各表,我想到的就是归并了(感觉像那种面试题,5个排序队列,每个队列20人,找十个队列中最小的8个数字,呵呵)。这是一个没有经验的人的想法,求前辈指点。

阅读 4.4k
3 个回答

可以考虑用分表,采用top k算法,多线程计算,最后再找出最小的几个

新手上路,请多包涵

建立空间索引

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题