gpt4 book ai didi

mysql - 优化我的附近位置MYSQL查询

转载 作者:行者123 更新时间:2023-11-29 10:09:36 25 4
gpt4 key购买 nike

我有一个查询导致我的网站运行速度非常慢。本质上,它从大约 2m 条记录的数据库中识别距离经度/纬度点最近的位置。

目前此查询需要 7 秒才能完成。

我已执行以下操作来加快速度(在超过 15 秒之前!)

为名称/经度/纬度/路径添加了索引键将路径存储在数据库中,以便不需要运行将结果存储到另一个表中,这样我们就不必再次运行查询。考虑按国家/地区拆分数据库,但是如果最近的位置位于邻国,这将导致问题。

还有其他想法吗?有没有办法限制查询中的经度/纬度,例如 + 或 - 2 度?

SELECT name,path, ( 6371 * acos( cos( radians(?) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(?) ) + sin( radians(?) ) * sin( radians( latitude ) ) ) ) AS distance FROM ".$GLOBALS['table']." HAVING distance < 200 AND path IS NOT NULL

最佳答案

不要使用latitudelongitude列,这样索引就没用了,因为你每次查询时都需要计算每条记录的距离度量,而没有能力对其进行优化。

MySQL 现在支持使用 POINT 数据类型和 CREATE SPATIAL INDEX 的地理空间数据,MySQL 知道如何优化这些数据。

类似于 this ;虽然 MySQL 8.0 应该是偶数 better .

关于mysql - 优化我的附近位置MYSQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51238379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com