Каков размер нулевых типов данных в СУБД Microsoft SQL Server?
Например, значение non-nullable int должно занимать 4 байта, сколько места будет выделено для столбца с нулевым значением?
Подзапросы: nullable int, char (N), nvarchar (N) - Я предполагаю, что они могут храниться по-разному.
Что я читал:
- Где найти размер типов данных SQL Server - хороший способ получить список типов sql и их размер для моей версии SQL-сервера. Но не говорит ни слова о типах с нулевым значением.
- http://msdn.microsoft.com/en-us/library/ms189124.aspx - существует формула для вычисления требуемого пространства столбцов переменной величины: "Variable_Data_Size = 2 + (Num_Variable_Cols x 2) + Max_Var_Size". Это очень странно: почему в нем содержится множитель * 2 (ничего не сказано о nvarchar - эта формула предназначена для всех типов переменных размеров, которые исходят из объяснения); это должна быть опечатка, которая добавляется Max_Var_Size, а не умножается; и, наконец, он содержит +2 байта для хранения длины значения, но снова не содержит ничего для хранения значений NULL. Насколько я понимаю, можно использовать 3 оставшихся бита длиной 2 байта для хранения идентификатора NULL, но действительно ли он хранится таким образом?
- Сколько размера "Null" значение берет в SQL Server - поскольку для меня лучшие ответы сбивают с толку. @Mark Byers сказал: "Если фиксированное фиксированное значение поля NULL занимает то же пространство, что и любое другое значение - ширина поля", но невозможно сохранить стандартный целочисленный интервал значений и дополнительное значение NULL в том же количестве биты. Затем "Если поле переменной ширины, значение NULL не занимает пробела" - повторное хранение NULL не может занимать места вообще - ему нужно сохранить некоторый маркер для нулевого значения. Подобная путаница с другими ответами там: кто-то говорит, что он принимает 2 дополнительных байта, кто-то - это только 1 байт.
- http://home.clara.net/drdsl/MSSQL/DataTypes.html - хорошая таблица с размерами типов, но опять же ничего не предназначено для значений NULL.