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