Menyetel NOT NULL tidak memiliki efek per se pada kinerja. Beberapa siklus untuk pemeriksaan - tidak relevan.
Tetapi Anda dapat meningkatkan kinerja dengan benar-benar menggunakan NULL alih-alih nilai dummy. Bergantung pada tipe data, Anda dapat menghemat banyak ruang disk dan RAM , sehingga mempercepat .. semuanya.
Bitmap nol hanya dialokasikan jika ada nilai NULL di baris . Ini satu bit untuk setiap kolom di baris (NULL atau tidak). Untuk tabel hingga 8 kolom, bitmap nol secara efektif benar-benar gratis, menggunakan byte cadangan antara header tuple dan data baris. Setelah itu, space dialokasikan ke dalam kelipatan MAXALIGN (biasanya 8 byte, mencakup 64 kolom). Perbedaannya hilang pada padding. Jadi, Anda membayar harga penuh (rendah!) untuk nilai NULL pertama di setiap baris . Nilai NULL tambahan hanya dapat menghemat ruang.
Persyaratan penyimpanan minimum untuk nilai non-null adalah 1 byte (boolean , "char" , ...) atau biasanya banyak lebih banyak, ditambah (mungkin) bantalan untuk penyelarasan. Baca tentang tipe data
atau periksa detail berdarah di tabel sistem pg_type .
Selengkapnya tentang penyimpanan nol: