Я пытаюсь получить 100 очков из своего стола с минимальным расстоянием до заданной точки.как сортировать строки на расстоянии от заданной точки, mysql?
Я использую
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);
Хотя я не знаю, как правильно его использовать. Не могли бы вы мне помочь?
он вообще не использует пространственный ... что это (пространственный индекс) для, тогда? –
Ваш единственный вид решения, который потенциально может использовать пространственный индекс. Я просто предлагаю другой метод, который стоит посмотреть, как сравнивается производительность. –
о. Я начал с метода, похожего на ваш, и получил много худшего исполнения –