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: