यदि आपके पास एक बहुत बड़ी तालिका है, तो उन मानों के विरुद्ध खोज करना जो अनुक्रमित नहीं हैं, बेहद धीमी गति से हो सकते हैं। MySQL के संदर्भ में इस प्रकार की क्वेरी "टेबल स्कैन" के रूप में समाप्त होती है, जो यह कहने का एक तरीका है कि इसे तालिका में प्रत्येक पंक्ति के विरुद्ध क्रमिक रूप से परीक्षण करना चाहिए। यह स्पष्ट रूप से ऐसा करने का सबसे अच्छा तरीका नहीं है।
अनुक्रमणिका जोड़ने से पढ़ने . में सहायता मिलेगी गति, लेकिन आपके द्वारा भुगतान की जाने वाली कीमत थोड़ी धीमी है लिखें गति। ऑप्टिमाइज़ेशन करते समय हमेशा एक ट्रेड-ऑफ होता है, लेकिन आपके मामले में पढ़ने के समय में कमी बहुत अधिक होगी जबकि लिखने के समय में वृद्धि मामूली होगी।
ध्यान रखें कि किसी इंडेक्स को बड़ी तालिका में जोड़ने में काफी समय लग सकता है इसलिए इसे अपने उत्पादन सिस्टम पर लागू करने से पहले उत्पादन डेटा के विरुद्ध इसका परीक्षण करें। तालिका संभवतः ALTER TABLE
. की अवधि के लिए लॉक की जाएगी बयान।
हमेशा की तरह, EXPLAIN
का उपयोग करें निष्पादन रणनीति निर्धारित करने के लिए आपके प्रश्नों पर। आपके मामले में यह कुछ ऐसा होगा:
EXPLAIN SELECT * FROM table1 WHERE my_big_number=19287319283784