我有这样的查询:
SELECT *, (
6371 * acos (
cos ( radians(33.577718) )
* cos( radians( `Latitude` ) )
* cos( radians( `Longitude` ) - radians(115.846524) )
+ sin ( radians(33.577718) )
* sin( radians( `Latitude` ) )
)
) AS `distance`
FROM `geopc_cn_places_grouped`
WHERE `Latitude`!=33.577718 AND `Longitude`!=115.846524
HAVING `distance` < 200
ORDER BY `distance` ASC
LIMIT 30;
查询执行总是在 3.5 到 4 秒之间。
我已经通过运行应用了复合索引Latitude
,但它并没有减少执行时间。Longitude
ALTER TABLE geopc_cn_places_grouped ADD INDEX index_Longitude_Latitude(Longitude, Latitude);
我想知道它为什么运行缓慢以及可以进行哪些优化。
慢查询日志消息显示了这一点
这是EXPLAIN SELECT
查询
表结构...
最后,这是表索引列表