Разница между типами данных CHAR и VARCHAR при хранении многобайтовых символов заключается в том, что CHAR хранит строки фиксированной длины, а VARCHAR — переменной. 13
CHAR полезен, когда требуется сохранять очень короткие строки или все значения имеют приблизительно одинаковую длину. 2 При сохранении коротких значений CHAR они дополняются справа пробелами до указанной длины. 2 Например, тип CHAR(10) может хранить 10 символов, использующих однобайтовое кодирование (диапазон Юникода от 0 до 127), но менее 10 символов при использовании многобайтовой кодировки (диапазон Юникода от 128 до 114 111). 1
VARCHAR увеличивает производительность за счёт меньшего потребления места на диске. 2 Строки этого типа могут занимать меньше места, чем строки фиксированной длины CHAR. 2 Происходит это потому, что в VARCHAR используется лишь то количество места, которое действительно необходимо (за исключением таблиц, у которых задан фиксированный размер строк). 2 В типе VARCHAR используется один или два дополнительных байта для хранения длины строки: один байт, если максимальная длина строки в столбце не превышает 255 байт, и два байта в случае более длинных строк. 2
Таким образом, CHAR подходит для постоянных по размеру данных, а VARCHAR — для данных, которые значительно изменяются по длине. 1