Bei einer Geospatial Suche mit einem Geospacial Index auf Geom Feld, meine Zeit Abfrage erhöhen anormaly wenn ich ORDER BY Abstand, gibt es eine alternative Syntax ou Tricks, um das zu vermeiden? Hinweis Ich bin mir bewusst diesen Beitrag: https://explainextended.com/2011/02/11/late-row-lookups-innodb/ aber dieser Trick kann nicht mit der Abfrage erreichen werden Gebrüll:LIMIT mit ORDER BY Verlangsamung Abfrage Lösung für Geospatial Mysql 5.7
diese Abfrage ohne Auftrag von 0,005 s nehmen
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
ERKLÄREN:
+----+-------------+----------+------------+-------+---------------+----------+---------+------+------+----------+-------------+
| 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 |
+----+-------------+----------+------------+-------+---------------+----------+---------+------+------+----------+-------------+
dieser mit ORDER BY nimmt 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
Lösungen, Vorschlag, alternative Syntax oder Tricks sind willkommen ..
@Rick ur Link .. localhost geht, kann man es beheben bitte – jess
(Sorry ...) Das Design in http: // mysql. rjweb.org/doc.php/latlng kann schneller sein. –
@Rick ur metheod scheint interessant, aber ich würde die neueste Mysql-Standard-Methode beibehalten, wie ich gepostet, dieser Weg ist sehr effizient ohne Reihenfolge, es zeigt nur auf eine gemeinsame mysql Bug, ich suche nach einer einfachen alternativen Syntax/Trick, Siehe diesen Hinweis: https://mariadb.com/kb/en/mariadb/improvements-to-order-by/ danke anyway – jess