实现按照距离排序分页查询数据,大佬们都会怎么做呢?

数据库里存储了要查询的目标经纬度。前端调用接口时会传递用户当前的经纬度。现在按距离由近到远,分页查询目标的列表

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案
  1. 一般数据量 几万以内 GeoHASH packagist.org/packages/cevin/geoha...
  2. 大于5万 可以引入三方工具 RedisGEO www.runoob.com/redis/redis-geo.htm...
  3. 几十万以内 没有其他附加条件的(where 性别=x and 年龄 < xx) MySQL 8 以上版本天生支持 www.jianshu.com/p/65114a9ecb0d | mysql.taobao.org/monthly/2021/07/06...
  4. 几百万数据内 有不多的附加条件查询 用PostgreSQL + PostGIS
  5. 大于100w 的同时有复杂条件筛选(group、order、where、avg等等), 上大型中间件

中间件推荐:

manual.manticoresearch.com/Searchi... (短小精悍,提枪就干)

www.elastic.co/guide/en/elasticsea... (大规模杀伤性武器)

solr.apache.org/guide/solr/latest/... (不失优雅的老古董)

7个月前 评论
cevin (作者) 7个月前
kis龍 7个月前
cevin (作者) 7个月前
讨论数量: 11

如果是数据不大,并发也不高可以使用楼上的方式,但是还是建议用redis的geo来做经纬度查询,把目标点导入redis计算

7个月前 评论
Cyline (楼主) 7个月前

你就说你多大数据量吧

7个月前 评论

蹲一手,想看看这类问题用什么方式解决。 数据量过大,没有频繁的修改也可以使用非传统数据库如clickhouse解决,聚合和高精度计算比mysql强特别多

7个月前 评论
sanders

我们用 MongoDB 的 geoNear 查询之后再排序

7个月前 评论
mouyong

discuss.plugins-world.cn/post/e6Zl... 代码片段,计算2个地点的经纬度,可以了解一下

7个月前 评论
  1. 一般数据量 几万以内 GeoHASH packagist.org/packages/cevin/geoha...
  2. 大于5万 可以引入三方工具 RedisGEO www.runoob.com/redis/redis-geo.htm...
  3. 几十万以内 没有其他附加条件的(where 性别=x and 年龄 < xx) MySQL 8 以上版本天生支持 www.jianshu.com/p/65114a9ecb0d | mysql.taobao.org/monthly/2021/07/06...
  4. 几百万数据内 有不多的附加条件查询 用PostgreSQL + PostGIS
  5. 大于100w 的同时有复杂条件筛选(group、order、where、avg等等), 上大型中间件

中间件推荐:

manual.manticoresearch.com/Searchi... (短小精悍,提枪就干)

www.elastic.co/guide/en/elasticsea... (大规模杀伤性武器)

solr.apache.org/guide/solr/latest/... (不失优雅的老古董)

7个月前 评论
cevin (作者) 7个月前
kis龍 7个月前
cevin (作者) 7个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!