Mysql 如何从数据库中获取坐标并在地图上快速显示?

Mysql 如何从数据库中获取坐标并在地图上快速显示?,mysql,sql,database,algorithm,Mysql,Sql,Database,Algorithm,我有一个数据库,其中有很多汽车的位置(坐标;纬度,液化天然气)。我只想通过给服务器提供坐标来获得汽车的位置,并快速获得位置。问题是,汽车的数量非常多,如果表中有数百万条记录,则在请求时使用 select * from locations where (lat >= '$lat-10' and lat <= '$lat+10') and (lng >= '$lng-10' and lng <= '$lng+10') 或者我应该在SQL中使用索引?如果是,我怎么

我有一个数据库,其中有很多汽车的位置(坐标;纬度,液化天然气)。我只想通过给服务器提供坐标来获得汽车的位置,并快速获得位置。问题是,汽车的数量非常多,如果表中有数百万条记录,则在请求时使用

select *
from locations
where (lat >= '$lat-10' and lat <= '$lat+10') and
      (lng >= '$lng-10' and lng <= '$lng+10')
或者我应该在SQL中使用索引?如果是,我怎么做?这就是答案吗

如何快速找到汽车的位置?
谢谢

请确保不需要在数据之间进行无用的转换,以便在表架构和查询中使用相同的数据类型pr lat和lng。 (如果lat、lng(以db为单位)为十进制,则不要使用字符串传递vars值。最终,请使用正确的绑定) 确保在两个位置的表位置上都有复合索引

在“选择”中仅选择您真正需要的列,并将这些列添加到您的复合索引中,例如:

 select col1,col2,col3 
 from locations 
 where (lat >= :lat-10 and lat <= :lat+10) and (lng >= :lng-10 and lng <= :lng+10);

 CREATE INDEX idx_lat_lng ON locations (lat,lng, col1, col2, col3);
选择col1、col2、col3
从地点

哪里(lat>=:lat-10和lat=:lng-10和lng请定义“fast”和“very fast”。在sql和应用程序代码中,有几十种方法可以做到这一点。您对fast的定义可能与我的定义非常不同。在sql答案的上下文中,我们只能猜测,而看不到您的表结构、索引定义和d解释计划。更新您的问题并添加您的表位置模式我的意思是尽可能快,以便用户等待时间不超过3秒。如果您担心性能,您需要查看MySQL的GIS扩展。@GordonLinoff谢谢您这是我想要的答案,我已开始根据您的答案搜索。
 select col1,col2,col3 
 from locations 
 where (lat >= :lat-10 and lat <= :lat+10) and (lng >= :lng-10 and lng <= :lng+10);

 CREATE INDEX idx_lat_lng ON locations (lat,lng, col1, col2, col3);