Должны ли типы данных иметь размеры степеней 2 в SQL Server? - PullRequest
7 голосов
/ 26 августа 2009

Каковы хорошие размеры для типов данных в SQL Server? При определении столбцов я вижу типы данных с размерами 50 как один из размеров по умолчанию (например: nvarchar (50), двоичный (50)). Каково значение 50? Я испытываю желание использовать размеры степеней 2, это лучше или просто бесполезно?

Обновление 1 Хорошо, спасибо за ваш вклад, ребята. Я просто хотел узнать, как лучше определить размер типа данных для столбца.

Ответы [ 7 ]

6 голосов
/ 26 августа 2009

Нет причин использовать степени 2 для производительности и т. Д. Длина данных должна определяться размером хранимых данных.

5 голосов
/ 26 августа 2009

Почему бы не традиционные силы 2, минус 1, такие как 255 ...

Серьезно, длина должна соответствовать тому, что вам нужно, и подходит для ваших данных.

Ничего другого: как клиент использует это, выравнивает по 32-битной границе слова, степени 2, дни рождения, Скорпион на Уране, бросок костей ...

4 голосов
/ 26 августа 2009

Причина, по которой многие поля имеют длину 50, состоит в том, что для SQL Server по умолчанию используется длина 50 для большинства типов данных, для которых важна длина.

Как уже было сказано, длина поля должна соответствовать данным, которые там хранятся, не в последнюю очередь потому, что существует ограничение на длину отдельной записи в SQL Server (это ~ 8000 байт). Можно преодолеть этот предел.

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

4 голосов
/ 26 августа 2009

Вы ничего не получите от использования степеней 2. Создайте поля так долго, как этого требует ваш бизнес - пусть SQL Server обрабатывает все остальное.

Кроме того, поскольку размер страницы SQL Server ограничен 8 КБ (из которых 8060 байтов доступны для пользовательских данных), создание строк переменной длины как можно меньшего размера (но настолько длинного, насколько это необходимо с точки зрения требований) является плюс.

Этот предел в 8 КБ является фиксированным системным параметром SQL Server, который нельзя изменить.

Конечно, в наши дни SQL Server может обрабатывать более 8 КБ данных подряд, используя так называемые «переполненные» страницы - но это менее эффективно, поэтому попытка остаться в пределах 8 КБ, как правило, хорошая идея.

Марк

3 голосов
/ 26 августа 2009

Размер поля должен соответствовать данным, которые вы планируете там хранить, глобальные значения по умолчанию не очень хорошая идея.

2 голосов
/ 26 августа 2009

Хорошая идея, что целый ряд помещается на страницу несколько раз, не оставляя слишком много свободного места.

Строка не может занимать две страницы, на странице имеется 8096 байтов свободного места, поэтому две строки, каждая из которых занимает 4049 байтов, будут занимать две страницы.

См. документы о том, как рассчитать пространство, занимаемое одной строкой.

Также обратите внимание, что VAR в VARCHAR и VARBINARY означает «варьирование», поэтому, если вы поместите 1 -байтовое значение в 50 -байтный столбец, потребуется 1 байт.

2 голосов
/ 26 августа 2009

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

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