Ну мы немного не о том говорили.
В чем разница между статическими типами и динамическими и откуда тормоза?
При построении таблицы выборки MySQL должен узнать размеры памяти, которую необходимо выделить под определенный столбец.
При использовании статических типов эта величина заранее известна из описания структуры и каждый раз не перепроверяется.
При мспользовании динамических полей заранее неизвестна длина самого большого поля в строке, поэтому мусткулу приходится "пробежаться" по всем значениям, дабы узнать максимальную длину и выделить соответсятвующий объем памяти для каждой ячейки в столбце.
Вот это время и есть критично.
Разница между char и varchar:
При построении таблицы выборки для char(N) и для varchar(N) выделяется равный размер памяти, который берется из описания структуры таблицы.
Разница этих типов в представлении данных таблицы на диске: varchar займет меньше места на диске, т.к.
используется только то количество символов, которое необходимо, плюс один байт для записи длины.
Но если у тебя в базе длины всех значений в столбце одинаковы, то разницы между char и varchar ты никакой не увидишь.