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

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

《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/... (不失优雅的老古董)

1年前 评论
cevin (作者) 1年前
kis龍 1年前
cevin (作者) 1年前
讨论数量: 11

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

1年前 评论
Cyline (楼主) 1年前

你就说你多大数据量吧

1年前 评论

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

1年前 评论
sanders

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

1年前 评论
mouyong

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

1年前 评论
  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/... (不失优雅的老古董)

1年前 评论
cevin (作者) 1年前
kis龍 1年前
cevin (作者) 1年前