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秒。
我应该如何才能在查询中获得最佳运行时间?按距离排序?
答案 0 :(得分:1)
如果没有ORDER BY
,它会查看10行,计算内容并提供结果。
使用ORDER BY
,它会查看所有行,为所有计算内容,对结果进行排序,最后 交付前10个。
你有什么指数?
请提供SHOW CREATE TABLE
。