Если вы имеете в виду: «Есть ли штраф за объявление размера поля больше, чем любые значения, которые в нем хранятся?», Тогда, пока он объявлен как varchar, ответ будет отрицательным. Каждый известный мне механизм БД SQL хранит только количество символов, фактически заданных в данных (плюс значение длины). Таким образом, если вы определяете поле как varchar (100), но сохраняете в нем только 10 символов, тогда оно займет всего 10 символов на диске (плюс 2 байта или около того для длины). Когда я сомневаюсь, я обычно делаю свои поля вархаров смехотворно большими.
Если вы имеете в виду «Есть ли штраф за хранение длинных символьных полей», ответ будет положительным. Дисковое пространство сегодня дешево, но оно не свободно, поэтому вы не хотите тратить его без причины. Вероятно, более важно, что для считывания данных с диска требуется время, поэтому чем длиннее ваши поля данных, тем медленнее становится программа. Если поле проиндексировано, это действительно может замедлить поиск, так как при каждом чтении придется сравнивать значение ключа с этим большим длинным полем.
Имейте в виду, что если вы предоставите пользователю большое поле для ввода данных, они будут использовать его, рано или поздно.
Все это говорит, что я ошибаюсь на стороне слишком большой, а не слишком маленькой. Дисковое пространство достаточно дешевое, поэтому вы не хотите заставлять пользователей изобретать сокращения на лету, потому что они не могут вписать реальные данные в доступное поле. Система, над которой я работаю сегодня, имеет поле описания продукта, которое слишком мало для многих реальных названий наших продуктов, поэтому пользователям приходится сокращаться. И, конечно, каждый пользователь сокращает свои значения, поэтому у нас есть двадцать разных способов сказать одно и то же.