Aangezien de overhead voor elke rij in PostgreSQL 23 bytes
Hoe dan ook, aangezien alle meer gecompliceerde typen hun eigen overhead hebben (bytea voegt bijvoorbeeld vier bytes overhead toe, bitstrings 5 tot 8), is de enige manier om te bereiken wat u zoekt door een bigint (8 bytes) te gebruiken, numeriek verschuiven van elke waarde en OR-ing samen het resultaat. U kunt dit doen met behulp van de bit string-bewerkingen om de code gemakkelijker te maken - bereken als bitstring en cast vervolgens naar bigint voordat u opslaat - of vermenigvuldig / voeg handmatig toe als u wilt dat de snelheid beter is. Hier ziet u bijvoorbeeld hoe u twee bytes samen opslaat in een structuur van twee bytes en ze vervolgens weer terugkrijgt:
int2 = 256 * byte1 + byte2
byte1 = int2 / 256
byte2 = int2 % 256
Je kunt hetzelfde idee uitbreiden door er 7 op die manier op te slaan. De overhead voor het ophalen zal nog steeds verschrikkelijk zijn, maar u zult tijdens het proces daadwerkelijk wat ruimte hebben bespaard. Maar niet erg veel ten opzichte van alleen de rijkop.