我有一个查询,导致我的网站运行非常缓慢。本质上,它可以从大约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