在地图上画个圈圈,那么就有一个点和半径,点是有经纬度的,根据经度、维度、半径到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根据经纬度查询半径多少以内的数据,画个圈圈查数据库相关推荐

  1. MySql根据经纬度查询任意距离范围内数据

    sql代码#当前位置经纬度 经度:117.215637 纬度:39.1373367 #表中经纬度字段 经度:longitude 纬度:latitude select * from( SELECT id ...

  2. mysql根据经纬度查询范围内数据,并根据距离排序

    最近接到一个新需求,要根据经纬度查询指定范围内的数据,并且根据距离进行排序,网上找了找相关实现方法,记录一下. java代码如下 public final class DistanceUtils {/ ...

  3. sql查询20公里以内的数据

    项目中遇到需要查询20公里以内的数据 我找到的有两种写法 SELECT *,( 6371 * acos ( cos ( radians(要查询的纬度) ) * cos( radians( 表中的纬度字 ...

  4. mysql的in查询参数限制,多少数据量会造成性能下降?什么时候创建临时表合适?

    文章目录 一.前言 二.本地配置以及生成测试数据 1.本地mysql配置 (1)mysql版本 (2)本地sql长度限制 2.创建表和测试数据(50W) (1)创建表语句 (2)循环插入50W条数据 ...

  5. 数据库根据经纬度查询离我最近的数据

    之前很啥很天真地以为无非就是逐个计算距离,然后比较出来就行了,然后当碰到访问用户很多,而且数据库中经纬度信息很多的时候,计算量的迅速增长,能让服务器完全傻逼掉,还是老前辈的经验比我们丰富,给了我很大的 ...

  6. oracle多边形经纬范围筛选_Oracle根据经纬度查询一定范围内的数据

    指定一个经纬度,给定一个范围值(单位:千米),查出在经纬度周围这个范围内的数据. 经度:23.33 纬度:34.66 范围:2000km SA_LONGITUDE为数据表经度字段 SA_LATITUD ...

  7. vue访问php时做增删改查,node连接mysql生成接口,vue通过接口实现数据的增删改查(一)...

    武汉加油遇新是直朋能到分览支体调!中国加油! 想必许多干用是处框它观有理近货框万理架是察放是近学vue的小伙伴想连接数据库,对数据进行增删改查吧,奈何不知道怎么实现.作为一路踩坑的我,为大家带来我的一 ...

  8. mysql 根据经纬度查询规定范围内符合坐标的店铺并优化查询的sql语句

    $ lat:纬度, $ lon:经度, 优化查询:latitude < ".($ lat+1)." and latitude> ".($ lat-1).&qu ...

  9. mysql 根据经纬度查询距离

    SELECT*, (6371 * acos(cos(radians('31.82030058')) * cos(radians(lat)) * cos(radians(lng) - radians(' ...

  10. mysql根据经纬度查询距离在1000米范围内的数据

    SELECT     lon,lat,id,name,     ST_Distance      (      point ( lon, lat ),      point ( 106.6890580 ...

最新文章

  1. 与 Linux 一起学习:学习打字
  2. 芯片如何储存信息_十四五规划之:芯片
  3. 学ASP只需一小时!
  4. php curl 代理ip访问url
  5. 面试算法工程师时,我居然被化学专业转行的老哥血虐了
  6. java 多线程内存模型
  7. 计算QPSK/16QAM/64QAM信号OFDM调制后PAPR
  8. java JButton计算器布局
  9. python,检测代理ip是否有效
  10. TLC5615模数转换锯齿波仿真实验(Arduino)
  11. 案例分析:如何从0到1对一款产品游戏化
  12. 清算(清分)与结算的区别
  13. Arduino for Esp8266 基础篇之Ticker
  14. 最近大火的 NFT 数字藏品是什么?
  15. Android用自定义View画小猪佩奇
  16. VUE项目练习大全(附github源码)
  17. 2022年电脑行业前景
  18. SSL数字证书认证的过程
  19. 争用期51.2us和最小帧长512比特算法
  20. 许嵩音乐智能问答系统微信小程序之音乐播放器

热门文章

  1. Downward API
  2. Tomcat8如何配置项目appBase和docBase
  3. mysql 数据快速删除
  4. java里的if语句怎么写_Java中的if怎么用?
  5. win10偶尔打不开开始菜单(按win键和点击开始菜单都没反应)
  6. html删除子元素无效,如何使用JavaScript删除DOM节点的所有子元素?
  7. Python对word文档进行操作
  8. 使用Vue单文件组件添加删除列表
  9. 科技开发规划VBS屌丝暗色调
  10. 利用arcmap提取河流中心线