Sto provando a ottenere 100 punti dal mio tavolo con una distanza minima da un dato punto.come ordinare le righe per una distanza da un punto dato, mysql?
sto 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ì, è doloroso. Ho appena googled. Non ho idea di come misurare la distanza in MySQL correttamente)
Ci vuole molto tempo per eseguire. EXPLAIN
dice che non ci sono possible_keys
.
ho creato un indice SPATIAL
sulla colonna pt
:
CREATE SPATIAL INDEX sp_index ON ip_group_city (pt);
Anche se non so davvero come usarlo correttamente. Potete per favore aiutarmi?
non fa uso dello spazio a tutti, anche ... di cosa si tratta (indice spaziale), allora? –
Il tuo è l'unico tipo di soluzione che potenzialmente utilizza l'indice spaziale. Sto solo suggerendo un altro metodo che vale la pena provare per vedere come si confronta il rendimento. –
oh. Ho iniziato con un metodo, simile al tuo, e ho ottenuto la peggiore perfomance –