放缓查询解决方案在与GEOM领域的地理空间索引地理空间搜索,我的时间查询增加anormaly当我要ORDER BY距离,是否有替代语法OU技巧,以避免? 注意我知道这个职位:https://explainextended.com/2011/02/11/late-row-lookups-innodb/ 但这一招不能与查询波纹管实现:限制与ORDER BY对地理空间的MySQL 5.7
没有为了这个查询通过采取0.005s
SELECT
ST_Distance_Sphere(Point(2.34, 48.85), geom) as distance
FROM testgeo1
WHERE ST_Contains(ST_MakeEnvelope(
Point((2.34+(500/111)), (48.85+(500/111))),
Point((2.34-(500/111)), (48.85-(500/111)))
), geom)
LIMIT 500
说明:
+----+-------------+----------+------------+-------+---------------+----------+---------+------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+----------+------------+-------+---------------+----------+---------+------+------+----------+-------------+
| 1 | SIMPLE | testgeo1 | NULL | range | sp_index | sp_index | 34 | NULL | 2609 | 100.00 | Using where |
+----+-------------+----------+------------+-------+---------------+----------+---------+------+------+----------+-------------+
这一个ORDER BY需要0.16s
SELECT
ST_Distance_Sphere(Point(2.34, 48.85), geom) as distance
FROM testgeo1
WHERE ST_Contains(ST_MakeEnvelope(
Point((2.34+(500/111)), (48.85+(500/111))),
Point((2.34-(500/111)), (48.85-(500/111)))
), geom)
ORDER BY distance
LIMIT 500
解决方案,建议,替代语法和技巧,欢迎..
声称提供证据@Rick乌尔链接进入到本地主机..你可以解决它,请 – jess
(对不起...)在HTTP的设计:// MySQL的。 rjweb.org/doc.php/latlng可能会更快。 –
@Rick乌尔metheod看起来有趣,但我会保持最新的Mysql的标准方法,我贴了,这样是为了wihout通过,它只是指向一个共同的mysql的错误非常有效,我在寻找一个简单的替代语法/伎俩,请参阅此说明:https://mariadb.com/kb/en/mariadb/improvements-to-order-by/谢谢anayway – jess