Apakah kolom bit SQL Server benar-benar menggunakan seluruh ruang nilai byte?


20

Saya mencari-cari SSMS dan melihat "ukuran" INTkolom saya adalah 4 byte (diharapkan) tapi saya agak terkejut melihat BITkolom saya adalah byte penuh.

Apakah saya salah mengerti apa yang saya lihat?


1
Saya merasa beruntung bahwa kolom BIT disejajarkan pada batas byte, bukan batas kata.
Mike Sherrill 'Cat Recall'

Jawaban:



14

Iya nih.

Jika Anda hanya memiliki satu bitkolom dalam tabel maka penyimpanan menggunakan a bytetetapi hingga 8 bitkolom dapat disimpan dalam byte yang sama sehingga 7 berikutnya "bebas" dalam hal itu.

Ada juga 1 bit per kolom kebutuhan penyimpanan untuk NULL_BITMAP(lagi dibulatkan ke byte berikutnya). Di halaman data ini berisi bituntuk semua kolom terlepas dari apakah mereka mengizinkan NULL(dengan pengecualian kolom nullable ditambahkan kemudian sebagai metadata hanya berubah melalui ALTER TABLEmana baris belum diperbarui)


9

BITmenggunakan satu byte per baris, tetapi Anda dapat mengemas hingga 8 BITbidang ke dalam penyimpanan satu byte itu.

Jadi field pertama berharga satu byte, tetapi tujuh berikutnya gratis !

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.