Tôi đang cố gắng lấy 100 điểm từ bảng của mình với khoảng cách thấp nhất đến một điểm nhất định.cách sắp xếp các hàng theo khoảng cách từ một điểm nhất định, mysql?
Tôi đang sử dụng
SELECT *, GLENGTH(
LINESTRINGFROMWKB(
LINESTRING(
ASBINARY(
POINTFROMTEXT("POINT(40.4495 -79.988)")
),
ASBINARY(pt)
)
)
)
AS `distance` FROM `ip_group_city` ORDER BY distance LIMIT 100
(Yeah, đó là đau đớn. Tôi vừa mới googled nó. Tôi không có ý tưởng làm thế nào để đo khoảng cách trong MySQL chính xác)
Phải mất thời gian rất dài cho thi hành. EXPLAIN
nói rằng không có possible_keys
.
Tôi tạo ra một chỉ số SPATIAL
trên cột pt
:
CREATE SPATIAL INDEX sp_index ON ip_group_city (pt);
Mặc dù tôi thực sự không biết làm thế nào để sử dụng nó một cách chính xác. Bạn có thể giúp tôi không?
nó không sử dụng không gian chút nào ... nó là gì (chỉ số không gian) cho, sau đó? –
Yours là loại giải pháp duy nhất có khả năng sử dụng chỉ mục không gian. Tôi chỉ đề xuất một phương pháp khác đáng để xem hiệu suất so sánh như thế nào. –
oh. Tôi bắt đầu với một phương pháp, tương tự như của bạn, và có một sự lãng phí tồi tệ nhất rất nhiều –