Ich versuche 100 Punkte von meinem Tisch mit der niedrigsten Entfernung zu einem bestimmten Punkt zu bekommen.wie Zeilen um eine Entfernung von einem bestimmten Punkt zu sortieren, mysql?
Ich verwende
SELECT *, GLENGTH(
LINESTRINGFROMWKB(
LINESTRING(
ASBINARY(
POINTFROMTEXT("POINT(40.4495 -79.988)")
),
ASBINARY(pt)
)
)
)
AS `distance` FROM `ip_group_city` ORDER BY distance LIMIT 100
(Ja, das ist schmerzhaft. Ich habe es einfach googeln. Ich habe keine Ahnung, wie Entfernung richtig in MySQL messen)
Es dauert sehr lange, ausführen. EXPLAIN
sagt, dass es keine possible_keys
gibt.
Ich habe einen SPATIAL
Index auf der pt
Spalte:
CREATE SPATIAL INDEX sp_index ON ip_group_city (pt);
Obwohl ich nicht wirklich wissen, wie man es richtig verwenden. Kannst du mir bitte helfen?
es verwendet überhaupt nicht räumliche ... was ist es (räumlicher Index) für, dann? –
Ihre einzige Lösung ist die Verwendung des räumlichen Index. Ich schlage nur eine andere Methode vor, die es wert ist zu versuchen, zu sehen, wie sich die Leistung vergleicht. –
oh. Ich habe mit einer Methode begonnen, die der Ihren ähnlich ist, und eine sehr schlechte Performance bekommen. –