一般来说,我对 MySQL 和数据库非常陌生,但我的查询似乎需要很长时间。我正在使用纬度和经度坐标从另一个位置 5 英里范围内的大约 700,000 个位置数据库中查找位置。问题是,查询需要 2.12 秒,我担心一旦我开始获得流量,MySQL 就会堵塞。这是我的代码:
SELECT *,((ACOS(SIN(44.4726 * PI() / 180) * SIN(lat * PI() / 180) + COS(44.4726 * PI() / 180) * COS(lat * PI() / 180) * COS((-93.1785 - lon) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS distance FROM locations HAVING distance<=5 ORDER BY distance ASC LIMIT 30;
我索引了纬度和经度字段,但仍然需要很长时间。这是我要求服务器执行的操作吗?我可以通过添加来加快速度吗
WHERE state = "$state"
如果是这样,我会在 Select 中的哪个位置添加它?