Зависит от РСУБД. IIRC, MySql выделяет 2-байтовые издержки для varchars> 255 символов (для отслеживания длины varchar). MSSQL <= 2000 позволит вам выделить размер строки> 8060 байт, но завершится неудачно, если вы попытаетесь ВСТАВИТЬ или ОБНОВИТЬ строку, которая на самом деле превышает 8060 байт. SQL 2005 [1] разрешает вставку, но выделяет новую страницу для переполнения и оставляет указатель позади. Это, очевидно, влияет на производительность.
[1] varchar (max) представляет собой особый случай, но также выделяет страницу переполнения, если длина поля> 8000 или строка> 8060. Это по умолчанию MSSQL, и поведение может изменяться с опция больших типов в строке данных.