Использовать в качестве primary key строковые стобцы не очень хорошая практика. Для поиска по строковым столбцам лучше использовать обычный индекс.
Что касается типов:
- в таблицах где не требуется поиск данных по текстовым полям лучше использовать varchar, т.к тип char всегда имеет фиксированный размер, и как правило весит больше.
- в таблицах где требуется поиск по текстовым данным - использовать char, т.к. MySQL будет работать по упрощенной схеме с таблицей