sql 经纬度范围检索(谷歌方案)

SELECT
  id, (
    6371 * acos (
      cos ( radians(78.3232) )
      * cos( radians( 数据库纬度字段) )
      * cos( radians( 数据库经度字段) - radians(65.3234) )
      + sin ( radians(78.3232) )
      * sin( radians( latitude ) )
    )
  ) AS distance  ,
    name
FROM tb_hotel
HAVING distance < 0.4
ORDER BY distance
LIMIT 0 , 20;  

该SQL语句将找到距离纬度:78.3232、经度:65.3234坐标0.4公里里范围内最近的20个位置。它根据该行的经纬度和目标经纬度计算距离,然后只要求距离值小于30公里的行,按距离对整个查询排序,并将其限制为20个结果。

转自:https://www.iteye.com/blog/justcoding-2224906 上面有更多的计算方式

原文地址:https://www.cnblogs.com/Zhusi/p/11470670.html

时间: 2024-10-07 08:58:21

sql 经纬度范围检索(谷歌方案)的相关文章

Mysql 数据库,经纬度距离计算/经纬度范围检索 (谷歌方案)

SELECT id, ( 6371 * acos ( cos ( radians(78.3232) ) * cos( radians( 数据库纬度字段) ) * cos( radians( 数据库经度字段) - radians(65.3234) ) + sin ( radians(78.3232) ) * sin( radians( 数据库纬度字段 ) ) ) ) AS distanceFROM tb_hotel HAVING distance < 0.4 ORDER BY distance L

alwaysOn+SQL群集+cluster 高可用方案测试

在SQL2012以前,高可用自动切换方案就是SQL群集了,优点就是切换完全自动,缺点也有很多, 然后2012出现了alwaysOn特性,在高可用上有了很大的提升,今天这个测试是将2个特性结合在一起做一个高可用的方案. 这个方案的优点就是数据上,主数据只有一份,而且不受alwaysOn节点数限制,缺点就是切换时间比alwaysOn本身的要长一些. 准备很简单,AD1台 测试足够. 然后先准备2台服务器,做cluster,注意第3台要做alwaysOn副本的机器千万不要现在加入cluster, 然后

Hibernate使用中防止SQL注入的几种方案

Hibernate使用中防止SQL注入的几种方案 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. 在获取便利操作的同时,SQL的注入问题也值得我们的密切注意,下面就来谈谈几点如何避免SQL注入:    1.对参数名称进行绑定: 1 2 Query query=session.createQuery(hql); query.setString(“name”,name);        2.

SQL 基础之创建其他方案对象(十五)

视图概述: – 从视图中创建.修改和检索数据 – 在视图上的数据操纵语言(DML)操作 – 删除视图 数据库对象 Object 对象 Description 描述 Table 表 基本的数据存储集合,由行和列组成. View 视图 从一张表或多张表中抽出的逻辑上相关的数据集合 Sequence 序列 生成规律的数值 Index 索引 提高查询性能 Synonym 同义词 给对象起的别名 什么是视图?我的理解就是从一张表或多张表创建一个自定义的关联虚拟表 视图有如下几个优点: 限制数据访问 简化查

大数据时代下的SQL Server第三方负载均衡方案----Moebius测试

一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 架构原理(Architecture) 测试环境(Environment) 安装Moebius(Install) Moebius测试(Testing) 负载均衡测试(Load Balancing Testing) 高可用性测试(Failover Testing) 数据安全性测试(Security Testing) 总结(Summary) 二.背景(Contexts) 前几天在SQL Serve

SQL Server读写分离实现方案简介

读写分离是中型规模应用的数据库系统常见设计方案,通过将数据从主服务器同步到其他从服务器,提供非实时的查询功能,扩展性能并提高并发性. 数据库的读写分离的好处如下: 通过将“读”操作和“写”操作分离到不同的数据库服务器上,降低对主服务器的CPU.内存.存储.网络资源的争用: 主服务器的增删改进行时,不影响查询服务器的查询,降低阻塞的发生,提高了并发性: 建立容灾副本甚至实现异地容灾,在发生灾难时,可以减少数据的损失. 为了实现数据库读写分离,应用程序需要作如下调整: 在应用程序的配置文件中设置两个

SQL Server性能计数器收集汇总方案(Reporting Service)

通过收集计数器信息,并将计数器信息汇总为不同粒度存储,以Reporting Service报表服务器显示.以下是计数器收集汇总的基本架构. 笔者需要收集的SQL Server计数器包括:SQL Server计数器属性详解 一.SQL Server计数器基本架构图 1. 生产服务器通过ODBC开发数据库互联ODBC配置访问监控监控服务器的SQLPerfData,将数据写入该数据库.详情请见计数器部署 SQL Server性能计数器部署(批量) 2. 通过作业调用存储过程spb_Perf_Count

java程序中sql注入分析及优化方案

先来看看百度百科的解释: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句.比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到sql注入攻击. 1.java程序

SQL语句Not IN优化方案

总结网友们在CSDN社区上对于not in的优化策略,整理如下,备查. select * from emp where emp_no not in (select emp_no from emp_bill) 要求用两种 SQL 写法优化上面 SQL . 方法一. select * from emp a where   not exists ( select 1 from emp_bill b where b.emp_no = a.emp_no) 方法二. select a.* from emp