Сколько размер "Null" значение принимает в SQL Server



У меня есть большая таблица с 10 колонками. 4 из них остается пустым большую часть времени. У меня есть запрос, который делает нулевое значение принимает любой размер или размер в байтах. Я прочитал несколько статей, некоторые из них говорят:



http://www.sql-server-citation.com/2009/12/common-mistakes-in-sql-server-part-4.html




Существует ошибочное мнение, что если у нас есть значения NULL в таблице, она не занимает места для хранения. Дело в том, что значение NULL занимает место – 2 байта




SQL: использование нулевых значений против значений по умолчанию




A NULL значение в базах данных-это системное значение, которое занимает один байт памяти и указывает, что значение отсутствует в отличие от пробела или нуля или любого другого значения по умолчанию.




Не могли бы вы направить меня относительно размера, взятого нулевым значением.

1286   4  

4 ответов:

Если поле фиксированной ширины хранения NULL занимает то же пространство, что и любое другое значение - ширина поля.

Если поле переменной ширины нулевое значение не занимает места.

в дополнение к пространству, необходимому для хранения нулевого значения, есть также накладные расходы для наличия столбца с нулевым значением. Для каждой строки один бит используется в столбце с нулевым значением, чтобы отметить, является ли значение для этого столбца нулевым или нет. Это верно независимо от того, является ли столбец фиксированным или переменным длина.


причиной несоответствия, которые вы наблюдали в информации из других источников:

  • старт первой статьи немного вводит в заблуждение. В статье речь идет не о стоимости хранения нулевого значения, а о стоимости наличия способности чтобы сохранить значение NULL (т. е. стоимость обнуления столбца). Это правда, что это стоит что-то в пространстве для хранения, чтобы сделать столбец nullable, но как только вы это сделали для хранения значения NULL требуется меньше места, чем для хранения значения (для столбцов переменной ширины).

  • вторая ссылка, кажется, вопрос о Microsoft Access. Я не знаю подробностей о том, как Access хранит нули, но я не удивлюсь, если он отличается от SQL Server.

следующая ссылка утверждает, что если столбец переменной длины, т. е. varchar затем NULL занимает 0 байт (плюс 1 байт используется, чтобы отметить, является ли значение NULL или нет):

приведенная выше ссылка, а также ссылка ниже, утверждают, что для столбцов фиксированной длины, т. е. char(10) или int, стоимостью NULL занимает длину столбца (плюс 1 байт, чтобы отметить, является ли это NULL или нет):

примеры:

  1. если вы устанавливаете char(10) до NULL, он занимает 10 байт (обнуляться)
  2. An int занимает 4 байта (также обнуляет).
  3. A varchar(1 million) значение NULL занимает 0 байт (+ 2 байта)

Примечание: На небольшой касательной, размер хранения varchar - Это длина введенных данных + 2 байта.

по этой ссылке:

каждая строка имеет нулевое растровое изображение для столбцов это позволяет нули. Если строка в этом столбец имеет значение NULL, то немного в Рисунок 1, иначе 0.

для типов данных переменного размера точный размер-0 байт.

для типа данных фиксированного размера acctual размер-это размер типа данных по умолчанию в байт установлен в значение по умолчанию (0 для цифры " для символов).

хранение нулевого значения не занимает никакого места.

" дело в том, что нулевое значение занимает Космос – 2 байта."

Это заблуждение ... это 2 байта в строке, и я уверен, что все строки используют эти 2 байта независимо от того, есть ли какие-либо столбцы с нулевым значением.

нулевое значение в базах данных-это система значение, которое занимает один байт хранение

Это говорит о базы данных в целом, а не конкретно SQL Server. SQL Server не использует 1 байт для хранения нулевых значений.

Comments

    Ничего не найдено.