【发布时间】:2016-10-02 15:48:11
【问题描述】:
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 秒内运行。
我应该怎么做才能使查询的最佳运行时间按距离排序?
【问题讨论】:
标签: mysql performance sql-order-by distance