Имеет ли значение размер полей базы данных? - PullRequest
2 голосов
/ 12 апреля 2009

У меня есть таблица базы данных, назовем ее Страны. У всех стран есть имена, короткие имена и континенты. Предположим, что самое длинное имя в любой стране мира составляет 54 символа. Должен ли я установить максимальный размер 54 или установить его, например, 64 или что-то еще? Повлияет ли мой выбор на запросы или хранилище каким-либо образом?

Я знаю, что это может показаться предварительной оптимизацией, но я часто выбираю 32, 64, 128 и т. Д., И я хотел бы знать, если это имеет значение.

Спасибо

Ответы [ 4 ]

3 голосов
/ 12 апреля 2009

Надежная СУБД должна знать, что для нее лучше. Если вам нужно «54 символа», но база данных может лучше оптимизировать поиск с 64 символами, она автоматически расширит поле данных. Если этого не произойдет, вы сохраните 12 символов в строке.

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

2 голосов
/ 23 апреля 2009

Зависит от типа данных. Например, в ORACLE - тип данных varchar2 будет хорошим выбором для строк переменной длины. Вам нужно только определить максимальную длину строки - varchar2 (maxsize). Это будет означать, что подойдет любая строка длиной до 10. Длина столбца будет зависеть от фактической строки, хранящейся в нем.

См. текст ссылки

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

2 голосов
/ 12 апреля 2009

Ответы будут относиться к СУБД:

Если вы используете SQL Server (начиная с 2000 года), varchar использует пространство только для фактических символов, хранящихся в нем (плюс небольшие накладные расходы), до максимального размера, как объявлено.

Как правило, не оптимизируйте, пока у вас не возникнут проблемы.

1 голос
/ 12 апреля 2009

Если вы используете SQL Server, я настоятельно рекомендую НЕ использовать VARCHAR (8000) или VARCHAR (MAX) для всех полей ..... вам нужно, чтобы здесь преобладал здравый смысл - make поле, настолько большое, насколько вы думаете, вам, вероятно, понадобится, добавьте немного больше для неожиданной длины, и все готово: -)

Кроме того, я думаю, что это хорошая идея, чтобы сохранить его на несколько отрезков, которые вы используете снова и снова. Например. Я использую VARCHAR (255) для большинства полей, таких как почтовый адрес или адрес электронной почты и т. Д., Которые могут быть немного длиннее, VARCHAR (50) для таких вещей, как номера телефонов и т. Д., И VARCHAR (20) для коротких строк, таких как почтовый индекс и т. .

Будьте прагматичны в этом - найдите стиль, который работает для вас. Не переусердствуйте, но не сходите с ума иным путем.

Марк

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