योजना पंक्तियों की एक बड़ी संख्या के साथ, INDEX(lat)
है एक गैर स्टार्टर, प्रदर्शन के लिहाज से, भी एक पट्टी करने के लिए सीमित के साथ: AND lat BETWEEN 65 AND 69
। INDEX(lat, lng)
कोई बेहतर क्योंकि अनुकूलक भी AND lng BETWEEN...
प्लान बी के साथ, दोनों स्तंभों का उपयोग नहीं होता आपका अगला चुनाव अक्षां और एलएनजी के अलावा एक सबक्वेरी शामिल होगी है। और संस्करण 5.6 फायदेमंद होगा। यह (INDEX(lat, lng, id)
सहित के बाद) कुछ इस तरह है:
SELECT ... FROM (
SELECT id FROM tbl
WHERE lat BETWEEN...
AND lng BETWEEN...) x
JOIN tbl USING (id)
WHERE ...;
विभिन्न कारणों से, प्लान बी केवल थोड़ा योजना ए की तुलना में बेहतर
योजना C पंक्तियों के लाखों लोगों के साथ, आप my pizza parlor algorithm की आवश्यकता होगी । इसमें पर्याप्त पंक्तियों की तलाश में तालिका को बार-बार जांचने के लिए संग्रहीत प्रक्रिया शामिल है। इसमें कच्चे 2 डी इंडेक्स प्राप्त करने के लिए पार्टिविजनिंग भी शामिल है। लिंक में संदर्भ कोड है जिसमें श्रेणी जैसी चीज़ों पर फ़िल्टरिंग शामिल है।
योजना ए और बी ओ (वर्ग (एन)) हैं; योजना सी ओ (1) है। प्लान ए और बी के लिए, यदि आप पंक्तियों की संख्या चौगुनी करते हैं, आप समय निकालते हैं। प्लान सी को धीमा नहीं मिलता है क्योंकि आप एन
बढ़ाते हैं
स्रोत
2015-05-12 16:19:14