微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用半径过滤器的mysql8最近的地方

如何解决使用半径过滤器的mysql8最近的地方

首先,我使用的是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 举报,一经查实,本站将立刻删除。