使用MySQL的空间函数和索引来实现根据经纬度查询5公里范围内门店列表的功能

使用MySQL的空间函数和索引来实现根据经纬度查询5公里范围内门店列表的功能

资源介绍


可以使用MySQL的空间函数和索引来实现根据经纬度查询5公里范围内门店列表的功能。具体步骤如下:

  1. 创建门店表格,包括门店名称、地址、经度、纬度等信息。门店经度和纬度需要设置为DECIMAL(10,6)类型。

CREATE TABLE `stores` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL COMMENT '门店名称',
  `address` varchar(255) DEFAULT NULL COMMENT '门店地址',
  `lng` decimal(10,6) DEFAULT NULL COMMENT '经度',
  `lat` decimal(10,6) DEFAULT NULL COMMENT '纬度',  PRIMARY KEY (`id`),
  SPATIAL INDEX `idx_location` (`lng`,`lat`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='门店表';
  1. 插入门店数据,例如:

INSERT INTO `stores` (`name`, `address`, `lng`, `lat`) VALUES('门店A', '广州市天河区XX路XX号', 113.332429, 23.135308),
('门店B', '广州市海珠区XX路XX号', 113.278910, 23.092502),
('门店C', '广州市番禺区XX路XX号', 113.384045, 22.944302),
...
  1. 构造查询语句,使用MySQL的空间函数ST_Distance_Sphere()计算两