目录
矩形范围(mysql)
使用内置函数(mysql)
## Geohash(mysql)
## 空间索引(es/mysql/postgreSQL/mongo/redis)
根据维基百科的球面计算公式,根据圆心坐标计算正方形四个点的坐标,查询正方形内的目标点。
SELECT * FROM xxx WHERE ((lat BETWEEN ? AND ?) AND (lng BETWEEN ? AND ?));
优点
简单
缺点
有误差,索引利用率不高,不易缓存,距离无序。
缺点:查询语句长,索引效率差
MySQL 和 Java 根据经纬度查询最近距离,适用于所有数据库方案 - Java开发 - 程序喵
Mysql 数据库,经纬度距离计算/经纬度范围检索 (谷歌方案) - YellosSword - 博客园
Geohash算法是一种地址编码,它能把二维的经纬度编码成一维的字符串,存到mysql的一列string类型即可,查询时计算处置后再查询。
例如:东圃幼儿园的GeoHash是wtw3ued9m,查询1KM内的幼儿园时, 使用SELECT * FROM xxx WHERE 存储GeoHash的字段 like 'wtw3ued%';
go实现:geohash算法以及求最邻近区域的点-golang - Go语言中文网 - Golang中文社区
优点
简单可控。
索引效率高。
易缓存。
通过编码精度可模糊坐标、隐私保护等。
缺点
距离无序,距离的排序需在内存二次运算得出,翻页时有点尴尬。
有误差,边界8区问题。
1、mysql/postgreSQL/mongo/redis
缺点:例如mysql的空间索引不可以和其他普通索引做联合联合查询
2、es
本文发布于:2024-02-03 02:49:07,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170689974748153.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |