Mysql根据经纬度查询半径多少以内的数据,画个圈圈查数据库
在地图上画个圈圈,那么就有一个点和半径,点是有经纬度的,根据经度、维度、半径到mysql数据库中去查询符合这个半径范围内的数据。
下面这个SQL是一个函数,传入两个点,返回两点的距离,通过这个函数可以带入到SQL语句中查询,可是这样有个问题,如果数据量太大,那么就用不了索引,查询会非常慢
CREATE DEFINER=`root`@`%` FUNCTION `fnGetDistance`(`longitude1` DECIMAL(18,8),`latitude1` DECIMAL(18,8),`longitude2` DECIMAL(18,8),`latitude2` DECIMAL(18,8)) RETURNS bigint(20)
BEGINDECLARE Distance REAL DEFAULT 0;SET Distance = ROUND(6378.137*2*ASIN(SQRT(POW(SIN((latitude1*PI()/180-latitude2*PI()/180)/2),2)+COS(latitude1*PI()/180)*COS(latitude2*PI()/180)*POW(SIN((longitude1*PI()/180-longitude2*PI()/180)/2),2)))*1000);RETURN Distance;
END
使用例子:由于我数据列大,非常慢,所以不采取
SELECT * FROM bg_building_price WHERE fnGetDistance(@longitude,@latitude,longitude,latitude)<=@radiu
如果要想快,只能把计算方法直接放条件上,这样就能使索引生效,不通过函数:
SELECT * FROM bg_building_price WHERE (6378.137*2*ASIN(SQRT(POW(SIN(((@latitude-latitude)*PI()/180)/2),2)+COS(@latitude*PI()/180)*COS(latitude*PI()/180)*POW(SIN(((@longitude-longitude)*PI()/180)/2),2)))) < @radius
补充:sql语句中@符号后表示变量,填写你地图上画圈圈的经纬度和半径。
Mysql根据经纬度查询半径多少以内的数据,画个圈圈查数据库相关推荐
- MySql根据经纬度查询任意距离范围内数据
sql代码#当前位置经纬度 经度:117.215637 纬度:39.1373367 #表中经纬度字段 经度:longitude 纬度:latitude select * from( SELECT id ...
- mysql根据经纬度查询范围内数据,并根据距离排序
最近接到一个新需求,要根据经纬度查询指定范围内的数据,并且根据距离进行排序,网上找了找相关实现方法,记录一下. java代码如下 public final class DistanceUtils {/ ...
- sql查询20公里以内的数据
项目中遇到需要查询20公里以内的数据 我找到的有两种写法 SELECT *,( 6371 * acos ( cos ( radians(要查询的纬度) ) * cos( radians( 表中的纬度字 ...
- mysql的in查询参数限制,多少数据量会造成性能下降?什么时候创建临时表合适?
文章目录 一.前言 二.本地配置以及生成测试数据 1.本地mysql配置 (1)mysql版本 (2)本地sql长度限制 2.创建表和测试数据(50W) (1)创建表语句 (2)循环插入50W条数据 ...
- 数据库根据经纬度查询离我最近的数据
之前很啥很天真地以为无非就是逐个计算距离,然后比较出来就行了,然后当碰到访问用户很多,而且数据库中经纬度信息很多的时候,计算量的迅速增长,能让服务器完全傻逼掉,还是老前辈的经验比我们丰富,给了我很大的 ...
- oracle多边形经纬范围筛选_Oracle根据经纬度查询一定范围内的数据
指定一个经纬度,给定一个范围值(单位:千米),查出在经纬度周围这个范围内的数据. 经度:23.33 纬度:34.66 范围:2000km SA_LONGITUDE为数据表经度字段 SA_LATITUD ...
- vue访问php时做增删改查,node连接mysql生成接口,vue通过接口实现数据的增删改查(一)...
武汉加油遇新是直朋能到分览支体调!中国加油! 想必许多干用是处框它观有理近货框万理架是察放是近学vue的小伙伴想连接数据库,对数据进行增删改查吧,奈何不知道怎么实现.作为一路踩坑的我,为大家带来我的一 ...
- mysql 根据经纬度查询规定范围内符合坐标的店铺并优化查询的sql语句
$ lat:纬度, $ lon:经度, 优化查询:latitude < ".($ lat+1)." and latitude> ".($ lat-1).&qu ...
- mysql 根据经纬度查询距离
SELECT*, (6371 * acos(cos(radians('31.82030058')) * cos(radians(lat)) * cos(radians(lng) - radians(' ...
- mysql根据经纬度查询距离在1000米范围内的数据
SELECT lon,lat,id,name, ST_Distance ( point ( lon, lat ), point ( 106.6890580 ...
最新文章
- 与 Linux 一起学习:学习打字
- 芯片如何储存信息_十四五规划之:芯片
- 学ASP只需一小时!
- php curl 代理ip访问url
- 面试算法工程师时,我居然被化学专业转行的老哥血虐了
- java 多线程内存模型
- 计算QPSK/16QAM/64QAM信号OFDM调制后PAPR
- java JButton计算器布局
- python,检测代理ip是否有效
- TLC5615模数转换锯齿波仿真实验(Arduino)
- 案例分析:如何从0到1对一款产品游戏化
- 清算(清分)与结算的区别
- Arduino for Esp8266 基础篇之Ticker
- 最近大火的 NFT 数字藏品是什么?
- Android用自定义View画小猪佩奇
- VUE项目练习大全(附github源码)
- 2022年电脑行业前景
- SSL数字证书认证的过程
- 争用期51.2us和最小帧长512比特算法
- 许嵩音乐智能问答系统微信小程序之音乐播放器