[英]Optimization sorting on calculated field
有表users
和address
。 第二个表有geo
类型为geometry 。 在搜索用户的过程中,在服务器上发送当前坐标,通过这样一个 sql 请求计算距离:
SELECT
FLOOR(ST_Distance_Sphere(point(lng, lat), `geo`)) as distance
FROM
address
WHERE
condition
它运作良好,但我也需要按此字段排序,这需要很多时间。 有人可以建议如何优化它吗?
MYSQL 5.7
经典问题。 没有快速的解决方案。 所有解决方案都涉及向WHERE
添加一个“边界框”,以及一些使用该边界框的索引。 这是我关于这个问题的“论文”,以及详细的解决方案: http://mysql.rjweb.org/doc.php/find_nearest_in_mysql
我假设小时“条件”包括
WHERE distance < 100
或者
ORDER BY distance LIMIT 10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.