Есть ли смысл использовать длины столбцов размером в байты? - PullRequest
3 голосов
/ 14 мая 2009

MS SQL Server 2000

Я понял, что в последних двух таблицах, которые я создал, я определяю длину столбцов varchar степенью 2. Итак, у меня есть один столбец длиной 1024, 512 или 256 Однако я понял, что в зависимости от длины других столбцов в таблице это, вероятно, не имеет значения вообще. Есть ли смысл в реализации такого дизайна? Я думаю нет, но хотел узнать ваше мнение.

Ответы [ 2 ]

3 голосов
/ 14 мая 2009

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

Еще одна вещь, которую вы должны иметь в виду, это то, что в Sql 2000 есть максимальная длина записи. Я думаю, что она составляет около 8192 байтов. Если вы выделяете поля степенями 2, вы потенциально можете добавить длину из одного столбца, которая потребуется в другом месте. Если ваши столбцы маленькие и их не много, это не проблема, но таблицы с большими полями varchar (скажем, в диапазоне 5000, что означает, что вам нужно выделить 8192, чтобы следовать соглашению степени 2). ) вам придется выделить для этого поля гораздо больше места, чем необходимо, и это вполне может помешать вам добавить другие поля, которые также необходимы в этой таблице.

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

1 голос
/ 14 мая 2009

Нет, это не так. Объем памяти, необходимый для записи, зависит от фактических данных, а не от теоретического максимума.

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