अधिक विवरण के लिए नीचे दिया गया लिंक देखें
https://dev.mysql.com/doc /refman/8.0/hi/table-scan-avoidance.html
पूर्ण तालिका स्कैन का कारण नीचे है
-
तालिका इतनी छोटी है कि कुंजी लुकअप से परेशान होने की तुलना में तालिका स्कैन करना अधिक तेज़ है। यह 10 से कम पंक्तियों और छोटी पंक्ति लंबाई वाली तालिकाओं के लिए सामान्य है।
-
अनुक्रमित कॉलम के लिए ON या WHERE क्लॉज में कोई प्रयोग करने योग्य प्रतिबंध नहीं हैं।
-
आप अनुक्रमित स्तंभों की निरंतर मानों के साथ तुलना कर रहे हैं और MySQL ने (इंडेक्स ट्री के आधार पर) गणना की है कि स्थिरांक तालिका के बहुत बड़े हिस्से को कवर करते हैं और यह कि तालिका स्कैन तेज़ होगा
-
आप किसी अन्य कॉलम के माध्यम से कम कार्डिनैलिटी वाली कुंजी का उपयोग कर रहे हैं (कई पंक्तियाँ कुंजी मान से मेल खाती हैं)। इस मामले में, MySQL मानता है कि कुंजी का उपयोग करके यह संभवतः कई कुंजी लुकअप करेगा और एक टेबल स्कैन तेज होगा।
पूर्ण तालिका स्कैन से बचने के लिए नीचे दिए गए उपयोग का उपयोग करें:
-
स्कैन की गई तालिका के प्रमुख वितरणों को अद्यतन करने के लिए ANALYZE TABLE tbl_name का उपयोग करें।
-
MySQL को यह बताने के लिए स्कैन की गई तालिका के लिए FORCE INDEX का उपयोग करें कि दिए गए इंडेक्स का उपयोग करने की तुलना में टेबल स्कैन बहुत महंगे हैं:
जैसे चुनें * t1 से, t2 फोर्स इंडेक्स (index_for_column)जहां t1.col_name=t2.col_name;