Mengingat bahwa overhead untuk setiap baris di PostgreSQL adalah 23 byte (HeapTupleHeaderData), jika Anda sangat peduli dengan jumlah ruang yang kecil sebanyak ini, Anda mungkin telah memilih cara yang salah untuk menyimpan data Anda.
Terlepas dari itu, karena semua tipe yang lebih rumit memiliki overhead sendiri (bytea menambahkan empat byte overhead misalnya, bit string 5 hingga 8), satu-satunya cara untuk mencapai apa yang Anda cari adalah dengan menggunakan bigint (8 byte), secara numerik menggeser setiap nilai dan OR-ing bersama hasilnya. Anda dapat melakukannya menggunakan operasi bit string untuk membuat kode lebih mudah--hitung sebagai string bit, lalu masukkan ke bigint sebelum menyimpan--atau cukup kalikan/tambahkan secara manual jika Anda ingin kecepatan menjadi lebih baik. Misalnya, inilah cara Anda menyimpan dua byte bersama-sama ke dalam struktur dua byte dan kemudian mendapatkannya kembali:
int2 = 256 * byte1 + byte2
byte1 = int2 / 256
byte2 = int2 % 256
Anda dapat memperluas ide yang sama untuk menyimpan 7 di antaranya dengan cara itu. Overhead pengambilan masih akan mengerikan, tetapi Anda sebenarnya telah menghemat beberapa ruang dalam prosesnya. Tetapi tidak terlalu banyak dibandingkan hanya dengan tajuk baris.