【问题标题】:mysql search order by distance is slowmysql按距离搜索顺序很慢
【发布时间】: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


    【解决方案1】:

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

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

    你有什么索引?

    请提供SHOW CREATE TABLE

    【讨论】:

      猜你喜欢
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多