हालांकि यह आसानी से दस्तावेज किया गया है कि एनयूएलएल पंक्ति के लिए पोस्टग्रेस्क्ल टुपल हेडर में केवल 1 बिट लेता है, एनयूएलएल एनएलएलएस को एक शून्य कॉलम के इंडेक्स में कितना स्थान लेता है (टुपल नहीं, लेकिन सूचकांक)? क्या यह सूचकांक के भीतर समान 1 बिट है जैसा कि टुपल में है, या यह पूर्ण कॉलम डेटा प्रकार का आकार है (ईजी: पूर्णांक = 4 बाइट्स)?क्या एनयूएलएल पोस्टग्रेस्क्ल इंडेक्स के भीतर जगह लेते हैं?
प्रश्न का संदर्भ यह है कि मेरे पास एक पोस्टग्रेस्क्ल तालिका है जिसमें 3 संदर्भ कॉलम (ईजी: foo_id, bar_id और baz_id) हैं और किसी भी पंक्ति के लिए, केवल उन स्तंभों में से एक का मूल्य होगा (अन्य 2 कॉलम नल हो)। हालांकि, मुझे अनुक्रमित करने के लिए सभी 3 कॉलम चाहिए। यह मानते हुए कि प्रत्येक कॉलम एक पूर्णांक (पोस्टग्रेस्क्ल में 4 बाइट्स) है, प्रत्येक पंक्ति को 4 बाइट्स (गैर-शून्य कॉलम के लिए) प्लस 2 बिट्स (2 नल कॉलम के लिए) पर कब्जा करना चाहिए। हालांकि, अगर मैं सभी 3 कॉलम के लिए इंडेक्स जोड़ना चाहता था, तो 3 इंडेक्स के लिए स्टोरेज या तो 12 बाइट्स होगा (यदि सूचकांक शून्य मान के लिए पूर्ण 4 बाइट्स लेता है) या उसी 4 बाइट्स + 2 बिट्स जैसा कि खुद को टुपल करें।
ठीक है, 1 तरीका है कि आप आंशिक रूप से इसका उत्तर दे सकते हैं - उन्हें डेटा प्रकार द्वारा आवश्यक बाइट्स की संख्या (केवल) द्वारा प्रदर्शित नहीं किया जा सका। आपके int उदाहरण में, 4 बाइट्स के हर संभव संयोजन एक वैध int मान का प्रतिनिधित्व करता है - इसलिए उन चार बाइट्स में एक नल को एन्कोड किया जा सकता है। –