यह देखते हुए कि PostgreSQL में किसी भी पंक्ति के लिए ओवरहेड 23 बाइट्स<है। /ए> (HeapTupleHeaderData), यदि आप वास्तव में कम मात्रा में स्थान की परवाह करते हैं, तो संभवतः आपने अपने डेटा को संग्रहीत करने का गलत तरीका चुना है।
भले ही, सभी अधिक जटिल प्रकारों का अपना ओवरहेड होता है (बाइटा ओवरहेड के चार बाइट्स जोड़ता है, उदाहरण के लिए, बिट स्ट्रिंग्स 5 से 8), जो आप खोज रहे हैं उसे पूरा करने का एकमात्र तरीका एक बिगिंट (8 बाइट्स) का उपयोग करना है। प्रत्येक मान को संख्यात्मक रूप से स्थानांतरित करना और परिणाम को OR-ing करना। आप बिट स्ट्रिंग ऑपरेशंस का उपयोग करके ऐसा कर सकते हैं। कोड को आसान बनाने के लिए - बिट स्ट्रिंग के रूप में गणना करें, फिर स्टोर करने से पहले बिगिंट पर डालें - या यदि आप गति को बेहतर बनाना चाहते हैं तो मैन्युअल रूप से गुणा/जोड़ें। उदाहरण के लिए, यहां बताया गया है कि आप दो बाइट्स को एक साथ दो बाइट संरचना में कैसे संग्रहीत करते हैं और फिर उन्हें फिर से प्राप्त करते हैं:
int2 = 256 * byte1 + byte2
byte1 = int2 / 256
byte2 = int2 % 256
आप उसी विचार को उनमें से 7 को संग्रहीत करने में बढ़ा सकते हैं। पुनर्प्राप्ति ओवरहेड अभी भी भयानक होने वाला है, लेकिन आपने वास्तव में इस प्रक्रिया में कुछ जगह बचाई होगी। लेकिन केवल पंक्ति शीर्षलेख के सापेक्ष बहुत अधिक नहीं है।