Поскольку varchar занимает дисковое пространство, пропорциональное размеру поля, есть ли какая-то причина, по которой мы не всегда должны определять varchar как максимум, например, varchar(8000)
на SQL Server?
При создании таблицы, если я вижу, что кто-то делает, varchar(100)
я должен сказать им, что вы не правы, вы должны сделать varchar(8000)
?
sql-server
varchar
Александр Левчук
источник
источник
Ответы:
Резюме: не делай этого.
источник
Предполагая, что вы имеете в виду SQL Server, я могу подумать об одном.
Существует ограничение на размер (8 КБ) строки в таблице, и SQL позволяет определять поля varchar, которые теоретически могут превышать этот предел. Таким образом, пользователь может получить ошибки, если он поместит слишком много данных в поле, связанное с этим.
Начиная с SQL 2K8, вы можете превысить это ограничение, но это влияет на производительность .
Кроме того, существует полная проверка разумности ограничения размера на то, как вы ожидаете, что данные будут выглядеть. Если вам нужно поле неограниченной длины, почему бы не использовать текст или текст?
источник
Наверняка это зависит от того, какая информация хранится в поле?
Некоторые вещи будут иметь максимальную длину по ряду причин, и если должна быть максимальная длина, то это должна быть длина вашего поля.
Если теоретически нет максимальной длины, то я бы спросил, почему будет использоваться varchar.
источник
В контексте баз данных Oracle я узнал, что всегда использование наименьшего размера поля для столбцов базы данных имеет один подводный камень.
При перемещении данных с помощью импорта-импорта из базы данных с однобайтовым сопоставлением в базу данных с многобайтовым сопоставлением (например, Oracle XE) длина в байтах может увеличиться, и импорт данных в таблицы, созданные при импорте, завершится неудачно. Конечно, у Oracle есть возможность определять длину varchar2 как char или как байты.
Суть в том, что не всегда целесообразно определять поле всегда как можно меньше. Я видел много таблиц изменения, чтобы увеличить поле позже (вызвано изменением требований).
Обсуждаемый вариант с 20% - 100% неиспользуемым полем.
источник