Estoy tratando de obtener 100 puntos de mi mesa con la distancia más baja a un punto dado.cómo ordenar las filas por una distancia desde un punto determinado, mysql?
estoy usando
SELECT *, GLENGTH(
LINESTRINGFROMWKB(
LINESTRING(
ASBINARY(
POINTFROMTEXT("POINT(40.4495 -79.988)")
),
ASBINARY(pt)
)
)
)
AS `distance` FROM `ip_group_city` ORDER BY distance LIMIT 100
(Sí, eso es doloroso. Acabo buscado en Google. No tengo idea de cómo medir la distancia en MySQL correctamente)
Se necesita mucho tiempo para ejecutar. EXPLAIN
dice que no hay possible_keys
.
que crea un índice sobre la columna de SPATIAL
pt
:
CREATE SPATIAL INDEX sp_index ON ip_group_city (pt);
Aunque no se sabe muy bien cómo usarlo correctamente. ¿Podrías ayudarme?
que no utiliza en absoluto espacial, también ... ¿qué es (índice espacial), entonces? –
El suyo es el único tipo de solución que potencialmente podría usar el índice espacial. Solo sugiero otro método que valga la pena para ver cómo se compara el rendimiento. –
oh. Empecé con un método, similar al tuyo, y obtuve el peor rendimiento –