Я пытаюсь получить 100 очков от моего стола с минимальным расстоянием до данной точки.
Я использую
SELECT *, GLENGTH(
LINESTRINGFROMWKB(
LINESTRING(
ASBINARY(
POINTFROMTEXT("POINT(40.4495 -79.988)")
),
ASBINARY(pt)
)
)
)
AS `distance` FROM `ip_group_city` ORDER BY distance LIMIT 100
(Да, это больно. Я только что погуглил. Я не знаю, как правильно измерить расстояние в MySQL)
Выполнение занимает очень много времени. EXPLAIN
говорит, что нет possible_keys
.
Я создал индекс SPATIAL
для столбца pt
:
CREATE SPATIAL INDEX sp_index ON ip_group_city (pt);
Хотя я действительно не знаю, как правильно его использовать. Можете ли вы помочь мне?