mysql按距离搜索顺序很慢

时间:2016-10-02 15:48:12

标签: mysql performance sql-order-by distance

set @dist = 100;
set @rlng1 = 48.67607474000000-@dist/abs(cos(radians(31.34747060000000))*69);
set @rlng2 = 48.67607474000000+@dist/abs(cos(radians(31.34747060000000))*69);
set @rlat1 = 31.34747060000000-(@dist/69);
set @rlat2 = 31.34747060000000+(@dist/69);

SELECT name,storeId, ST_DISTANCE(POINT(48.67607474000000,31.34747060000000),
                                 POINT(lng, lat)) AS distance
FROM store
WHERE ST_WITHIN(POINT(48.67607474000000,31.34747060000000),
                ENVELOPE(LINESTRING(point(@rlng1, @rlat1),
                         point(@rlng2, @rlat2))))
ORDER by distance
LIMIT 10 OFFSET 0;

我有一个查询来接近用户商店..

这是我的查询..当我正常运行查询时没有(按距离排序)我的查询在0.0161秒运行但是当我使用(按距离排序)时,我的查询运行在2.8791秒。

我应该如何才能在查询中获得最佳运行时间?按距离排序?

1 个答案:

答案 0 :(得分:1)

如果没有ORDER BY,它会查看10行,计算内容并提供结果。

使用ORDER BY,它会查看所有行,为所有计算内容,对结果进行排序,最后 交付前10个。

你有什么指数?

请提供SHOW CREATE TABLE