Якщо ви маєте на увазі "Чи існує штраф за оголошення розміру поля більшим за будь-які значення, які фактично зберігаються в ньому?", То поки це оголошено варчаром, відповідь - ні. Кожен двигун SQL БД, який я знаю, зберігає лише кількість символів, фактично вказаних у даних (плюс значення довжини). Отже, якщо ви визначите поле як varchar (100), але в ньому зберігається лише 10 символів, воно буде містити лише 10 символів на диску (плюс 2 байти або близько того по довжині). Коли ви сумніваєтесь, я звичайно роблю свої варчарські поля смішно великими.
Якщо ви маєте на увазі "Чи існує штраф за зберігання довгих полів символів", відповідь - так. Дисковий простір сьогодні дешевий, але він не безкоштовний, тому ви не хочете витрачати його без жодної причини. Напевно, важливіше, що потрібен час для зчитування даних з диска, тому чим довші ваші поля даних, тим повільніше стає програма. Якщо поле індексується, це дійсно може уповільнити ваші пошуки, оскільки кожне прочитане повинно буде порівнювати ключове значення з цим великим довгим полем.
Майте на увазі, що якщо ви дасте користувачеві велике поле для введення даних, він рано чи пізно ним скористається.
Все, що сказано, я б помилявся на стороні занадто великого, а не занадто малого. Місце на диску досить дешеве, що ви не хочете змушувати користувачів вигадувати абревіатури під час руху, оскільки вони не можуть вписати реальні дані у доступне поле. У системі, над якою я сьогодні працюю, є поле для опису продукту, яке є занадто малим для багатьох справжніх назв нашої продукції, тому користувачам доводиться скорочувати. І звичайно, кожен користувач скорочує по-різному, тому у нас є двадцять різних способів сказати те саме.