मैं अपनी तालिका से 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
उपयोग कर रहा हूँ (हाँ, यह दर्दनाक है। मैं सिर्फ यह googled है। मुझे नहीं पता है कि कैसे सही ढंग से MySQL में दूरी को मापने के)
यह के लिए बहुत लंबा समय लगता है निष्पादित। EXPLAIN
कहता है कि possible_keys
नहीं हैं।
CREATE SPATIAL INDEX sp_index ON ip_group_city (pt);
हालांकि मैं वास्तव में उसे सही ढंग से उपयोग करने के लिए पता नहीं है:
मैं pt
स्तंभ पर एक SPATIAL
सूचकांक बनाया। क्या आप मेरी मदद कर सकते हैं?
यह बिल्कुल स्थानिक का उपयोग नहीं करता है, भी ... क्या यह (स्थानिक सूचकांक) के लिए है, तो है? –
आपका एकमात्र समाधान है जो संभावित रूप से स्थानिक सूचकांक का उपयोग करेगा। मैं सिर्फ यह देखने की कोशिश कर रहा हूं कि प्रदर्शन की तुलना किस प्रकार की जाती है। –
ओह। मैंने आपके जैसा ही एक विधि शुरू की, और बहुत खराब परिधि –