Я ковтав навколо SSMS і помітив, що "розмір" моїх INTстовпців становив 4 байти (очікувалося), але я був трохи шокований, побачивши, що мої BITстовпці були цілим байтом.
Я неправильно зрозумів, на що дивився?
Я ковтав навколо SSMS і помітив, що "розмір" моїх INTстовпців становив 4 байти (очікувалося), але я був трохи шокований, побачивши, що мої BITстовпці були цілим байтом.
Я неправильно зрозумів, на що дивився?
Відповіді:
Скільки бітових стовпців ви визначили у таблиці? Я знайшов це на MSDN, він говорить, що 8 або менше бітових стовпців зберігаються як один байт.
Так.
Якщо у вас є лише один bitстовпець у таблиці, тоді для зберігання використовується byteале до 8 bitстовпців, які можуть зберігатися в одному байті, тому наступні 7 є "вільними" в цьому відношенні.
Також є необхідність зберігання 1 біт на стовпчик для NULL_BITMAP(знову округлена до наступного байта). На сторінках даних він містить bitдля всіх стовпців незалежно від того, дозволяють вони чи ні NULL( за винятком змінних стовпців, доданих пізніше як метадані, змінюються лише через ALTER TABLEте, що рядок ще не оновлено)