नहीं, NULL का उपयोग करने से खाली VARCHAR
. से कम जगह नहीं लगेगी या INT
खेत। वास्तव में इसमें अधिक लग सकता है अंतरिक्ष। ऐसा क्यों है:
एक VARCHAR
आकार + मान के रूप में संग्रहीत किया जाता है। आकार के लिए उपयोग किए गए बाइट्स की संख्या VARCHAR
. के अधिकतम संग्रहण पर निर्भर करती है . VARCHAR(255)
एक बाइट की आवश्यकता है, VARCHAR(65536)
दो बाइट्स वगैरह की आवश्यकता है।
ताकि VARCHAR(255)
कॉलम एक बाइट लेता है, भले ही आप एक खाली स्ट्रिंग स्टोर करें। निम्न तालिका प्रति पंक्ति कम से कम एक बाइट (साथ ही भंडारण इंजन के आधार पर कुछ अन्य संभावित ओवरहेड) लेगी।
CREATE TABLE sample (
a VARCHAR(255) NOT NULL
);
NULL
को सेव करने के लिए मान, MySQL प्रत्येक पंक्ति के लिए बिटमास्क का उपयोग करता है। प्रति बाइट में अधिकतम 8 अशक्त स्तंभ संग्रहीत किए जा सकते हैं। तो अगर आपके पास इस तरह की एक टेबल है:
CREATE TABLE sample (
a VARCHAR(255) NULL
);
प्रति पंक्ति कम से कम दो बाइट लेगा। NULL
स्टोर करना बस थोड़ा सा सेट करता है, यह पहले से ही आरक्षित है कि आप इसका इस्तेमाल करते हैं या नहीं। VARCHAR
. के लिए बाइट का आकार अभी भी प्रत्येक पंक्ति के लिए उपयोग किया जाता है, भले ही कॉलम NULL
. पर सेट हो ।