问题描述
首先,我使用的是MysqL8。 我有一张表,用于存储我所在国家/地区的州。 我的表 ddl 是:
CREATE TABLE state_v2(
`id` int(11) NOT NULL,uf_code INT NULL,uf VARCHAR(2) NOT NULL,`name` VARCHAR(100) NOT NULL,latitude FLOAT(8) NOT NULL,longitude FLOAT(8) NOT NULL,`country` varchar(75) NOT NULL,coord POINT SRID 4326 NOT NULL,PRIMARY KEY (id),unique (country,uf_code),unique (latitude,longitude),index (uf_code)
);
ALTER TABLE state_v2 ADD SPATIAL INDEX(coord);
用户选择一个地方,我以这个地方为参考,找到距离最近的 100 公里以内的州。 (参数是正确的点)。
我正在使用这个查询:
SELECT * FROM (
SELECT
sv.*,ST_distance_sphere(
$param,sv.coord) as distance
FROM state_v2 sv
WHERE ST_distance_sphere(
$param,sv.coord) < 100000
) as temp
order by temp.distance;
1 - 这个查询是否正确?我担心这样使用的性能,它是使用全表扫描。
2 - 创建的索引是否正确?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)