有表users
和address
。第二个表的列geo
具有几何学类型。在搜索用户期间,在服务器上发送当前的同弦,并通过这样的sql请求计算距离:
SELECT
FLOOR(ST_Distance_Sphere(point(lng, lat), `geo`)) as distance
FROM
address
WHERE
condition
它工作得很好,但我也需要根据这个领域进行分类,这需要大量的时间。有人能建议如何优化它吗?
MySQL5.7
发布于 2021-03-18 19:54:49
经典问题。没有快速的解决办法。所有解决方案都需要在WHERE
中添加一个“边界框”,加上一些利用该边界框的索引。这是我关于这个问题的“论文”,还有详细的解决方案:http://mysql.rjweb.org/doc.php/find_nearest_in_mysql
我假设小时“条件”包括
WHERE distance < 100
或
ORDER BY distance LIMIT 10
https://stackoverflow.com/questions/66672389
复制相似问题