2011-01-22 9 views
35

मैं int (10) का उपयोग कर रहा हूं और सिर्फ ध्यान दिया है कि वर्डप्रेस बिगिन (20) का उपयोग करता है - आईडी ऑटो वृद्धि के लिए बिगिन (20) और int (10) का उपयोग करने के लिए क्या अलग है? आईडी कॉलम के लिए मुझे किस का उपयोग करना चाहिए?MySQL: bigint बनाम int

`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, 

बनाम

`id` int(10) unsigned NOT NULL AUTO_INCREMENT, 

धन्यवाद।

+0

सवाल है, अगर यह कम performant है: http://stackoverflow.com/questions/9376610/bigint-mysql-performance-compared-to-int – rubo77

उत्तर

56

अंतर अधिकतम मूल्य जो संग्रहित किया जा सकता में विशुद्ध रूप से है (bigint (20) और ४२९४९६७२९५ पूर्णांक (10) के लिए के लिए 18.446.744.073.709.551.615, मेरा मानना ​​है) , MySQL Numeric Types मैन्युअल पृष्ठ पर दिए गए विवरणों के अनुसार।

संयोग से, (20) और (10) का उपयोग काफी हद तक अप्रासंगिक है जब तक आप ज़ीरोफिल का उपयोग नहीं कर रहे हैं। (यानी: यह वास्तव में संग्रहित संख्या के आकार को नहीं बदलता है - यह सब प्रकार के नीचे है।)

हालांकि, व्यावहारिक रूप से यह ध्यान दिया जाना चाहिए कि आपको इनमें से किसी भी सीमा को मारने की संभावना नहीं है समय जल्द ही, जब तक आप वास्तव में सक्रिय ब्लॉगर हैं।

+6

यह ध्यान देने योग्य है कि bigint 8 बाइट्स की खपत int के लिए भंडारण बनाम 4 बाइट्स। एक हस्ताक्षरित (mysql डिफ़ॉल्ट) int मूल्य> 2 अरब की अनुमति देता है; इसलिए, अधिकांश समय यह आईडी कॉलम के लिए एक उत्कृष्ट उम्मीदवार है। बेशक, जब तक कि आप वास्तव में विशाल रिकॉर्ड सेट से निपट नहीं रहे हैं, जहां कॉलम प्रकार/संग्रहण चिंता का विषय है, बिगिन बनाम int बहुत महत्वपूर्ण नहीं है – virtualeyes

9

एकमात्र अंतर इस प्रकार की सीमा है। INT एक 32-बिट लंबा है जबकि BIGINT 64-बिट लंबा है, इसलिए यह 123456789123456789 जैसी बड़ी संख्याओं को स्टोर कर सकता है (जिसे INT के रूप में संग्रहीत नहीं किया जा सकता है)।

यहाँ MySQL पूर्णांक प्रकार की एक पूरी सूची है: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

संबंधित मुद्दे