Подходящее свойство редко заполненного столбца таблицы внутри SQL Server? - PullRequest
1 голос
/ 10 июня 2019

Мне нужно создать таблицу, как на картинке:

'Notes' column is rarely filled!

У нас есть столбец с именем 'Примечания' , которыйэто редко заполненный столбец.

Какое лучшее свойство для столбца редко заполняется SQL Server

Ответы [ 2 ]

2 голосов
/ 11 июня 2019

Предполагается, что SQL Server 2016 и более поздние версии ,
Вам необходимо установить столбец как SPARSE, потому что:

1-разреженныйстолбцы - это обычные столбцы, которые имеют оптимизированное хранилище для нулевых значений.
2-разреженные столбцы уменьшают требования к пространству для нулевых значений за счет увеличения накладных расходов для извлечения ненулевых значений.
3-Рассмотрите возможность использования разреженных столбцов, если сэкономленное пространство составляет не менее 20-40%.
4-разреженные столбцы и наборы столбцов определяются с помощью операторов CREATE TABLE или ALTER TABLE.
5-разреженные столбцы можно использовать с наборами столбцов и отфильтрованными индексами.

CREATE TABLE HR.Employees
    (
      NO int  Primary Key,
      ProjectCode int NOT NULL ,
      FullName varchar (50)  NOT NULL ,
      StartDate DATE  NOT NULL ,
      Salary int  NOT NULL ,
      TotalSeviceMonths int  NOT NULL ,
      TotalEOSInMonths int  NOT NULL ,
      TotalEOSAnount int  NOT NULL ,
      Notes varchar (150) SPARSE NULL,

    ) 
1 голос
/ 10 июня 2019

Я бы посоветовал вам сохранить столбец как переменный символьный столбец, чтобы не тратить место на редко заполненный столбец.Укажите длину, чтобы ограничить заполнение ненужных значений в полях заметок.Я ставлю 512 здесь, просто для справки.Вы можете выбрать правильную длину.Если это только английские символы, выберите VARCHAR(512).Я бы предложил иметь NVARCHAR(512) для учета неанглоязычных символов, так что если приложение в будущем станет международным, его можно будет поддерживать.

Если заметки могут иметь любую длину и содержать более 8000 символов (если это VARCHAR) и 4000 символов (если это NVARCHAR), я бы предложил хранить их в VARCHAR(MAX) или * 1006.*

ОБНОВЛЕНИЕ Как рекомендует @Dale Burrell в комментариях, SPARSE столбцы хорошо подходят для ваших нужд.Есть некоторые ограничения, связанные со столбцами SPARSE.Прочтите о них и посмотрите, подходят ли они для ваших нужд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...