我有一个在 mysql (Navicat) 中运行大约 2 秒的 sql 查询,它通过 600,000 个位置返回所有表数据并计算我输入的经纬度之间的距离。
SQL 是这样的:
select *, 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) -
radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance
FROM places
GROUP BY places.user_id
HAVING distance > 0
ORDER BY distance LIMIT 0 , 10;
在上面的查询中,37 和 -122 作为 lat 和 long 传递到查询中。
当我在 Navicat 中运行它时,需要 2 秒,但在 Cakephp 或使用 mysql_query() 的直接 php 中需要几分钟。
为什么会发生这种情况,我该如何解决?
我在运行 XAMPP 的 Win7 4GB 机器上本地运行 MySQL 和 Apache。