В slightly heated discussion on TDWTF возник вопрос о размере столбцов varchar в БД.Какой размер выбрать для столбца (n) varchar?
Например, возьмите поле, содержащее имя человека (только имя, фамилию). Легко видеть, что это будет не очень долго. У большинства людей есть имена с менее чем 10 символами, и немногие из них выше 20. Если вы сделаете свой столбец, скажем, varchar (50), он определенно будет содержать все имена, с которыми вы когда-либо сталкивались.
Однако для большинства СУБД не имеет значения размер или скорость, независимо от того, сделаете ли вы varchar (50) или varchar (255).
Итак, почему люди пытаются сделать свои столбцы как можно меньшими? Я понимаю, что в некоторых случаях вам действительно захочется установить ограничение на длину строки, но в основном это не так. И более широкий запас будет полезен только в случае редкого случая человека с чрезвычайно длинным именем.
Добавлено: Люди хотят ссылки на заявления о «нет никакой разницы в размерах и скорости». ОК. Вот они:
Для MSSQL: http://msdn.microsoft.com/en-us/library/ms176089.aspx
Размер хранения фактическая длина введенных данных + 2 байта.
Для MySQL: http://dev.mysql.com/doc/refman/5.1/en/storage-requirements.html
L + 1 байт, если значения столбцов требуют 0 - 255 байт, L + 2 байта, если значения может потребоваться более 255 байт
не могу найти документацию для Oracle, и я не работал с другими СУБД. Но у меня нет оснований полагать, что там что-то другое.
Мне понравится ссылка на «Однако для большинства СУБД не имеет никакого значения в размере или скорости, независимо от того, делаете ли вы varchar (50) или varchar (255) » –
См. Http://stackoverflow.com/questions/177354/size-of-varchar-columns –
Это не дубликат - это более общий вопрос, а не только о MSSQL. –