यह इंडेक्स पर निर्भर करता है। अगर दोनों कॉलम में इंडेक्स सेट हैं, तो आपको int
. पर कास्ट करना चाहिए , क्योंकि इसे केवल 4 बाइट्स की तुलना करने की आवश्यकता है। यदि, तथापि, केवल varchar
कॉलम को अनुक्रमित किया जाता है, varchar
. पर डाला जाता है ।
अंत में, आपके पास अपनी क्वेरी होनी चाहिए explain
एड, यह देखने के लिए कि किस इंडेक्स का उपयोग किया जाता है, और उसके अनुसार कास्ट करें।
यदि कोई अनुक्रमणिका सेट नहीं है, तो int
. पर कास्ट करें सामान्य तौर पर बेहतर तरीका है। हालांकि, अगर कोई इंडेक्स सेट नहीं है, तो इससे कोई फर्क नहीं पड़ता, आप कास्ट करने का सही तरीका चुनने की तुलना में इंडेक्सिंग करके ज्यादा समय बचाएंगे। सिवाय, फिर से, टेबल छोटे हैं। फिर, यह वास्तव में भी कोई मायने नहीं रखता।
वास्तव में, हमें न केवल तुलना के लिए, बल्कि कास्टिंग के लिए भी लागतों को ध्यान में रखना चाहिए:एक int
कास्टिंग करना एक varchar
. के लिए varchar
. को पार्स करने से थोड़ा तेज़ है एक int
. के लिए . हालांकि, कम से कम 4 वर्णों वाले वर्चर की तुलना करना उस लाभ को बेकार कर देगा। यदि आपके मान 999 से अधिक हैं, तो int
. पर कास्ट करें तेज होगा। लेकिन यह अब आपके ऑपरेटिंग सिस्टम, आर्किटेक्चर, आपके MySQL बाइनरी द्वारा उपयोग किए जाने वाले निर्देश सेट आदि पर निर्भर करता है। वास्तव में विश्वसनीय उत्तर पाने का एकमात्र तरीका है:लक्ष्य मशीन पर उस स्थिति को बेंचमार्क करें।