यह हो सकता है सबसे अच्छा समाधान हो। आइए पहले कुछ अन्य उत्तर प्राप्त करें...
क्या करता है EXPLAIN SELECT ... कहो? (यह आपके प्रश्न 2 का उत्तर दे सकता है)।
आपकी क्वेरी अन्य उत्तरों की परवाह किए बिना संपूर्ण तालिका को स्कैन करेगी। शायद आप चाहते हैं LIMIT ... अंत में?
एक और चीज जो उपयोगी हो सकती है (आपके ऐप और ऑप्टिमाइज़र के आधार पर):WHERE में एक बाउंडिंग बॉक्स जोड़ें खंड।
किसी भी स्थिति में, वास्तव में कितनी पंक्तियों को छुआ गया है, इसका सटीक अनुभव प्राप्त करने के लिए निम्न कार्य करें:
FLUSH STATUS;
SELECT ...;
SHOW SESSION STATUS LIKE 'Handler%';
उन उत्तरों के साथ वापस आएं; तब शायद हम आगे पुनरावृति कर सकें।
स्थिति दिखाएं के बाद
खैर, Handler_read_rnd_next कहते हैं कि यह एक पूर्ण टेबल स्कैन था। 1000 और 1001 -- क्या आपके पास LIMIT 1000 है ?
मैं यह निष्कर्ष निकालता हूं कि LIMIT SPATIAL . के तरीके में शामिल नहीं है काम करता है। अर्थात्, यह सरल कार्य करता है - (1) सभी पंक्तियों की जाँच करें, (2) क्रमबद्ध करें, (3) LIMIT ।
तो, क्या करें?
योजना ए:तय करें कि आप एक्स मील (किमी) से अधिक दूर परिणाम नहीं चाहते हैं और क्वेरी में "बाउंडिंग बॉक्स" जोड़ें।
योजना बी:स्थानिक को त्यागें और कार्य को करने के लिए अधिक जटिल तरीके से खुदाई करें:https:// mysql.rjweb.org/doc.php/latlng