utf наистина е utfmb3 и може да използва максимум 3 байта на знак, докато utfmb4 може да използва 4 байта на знак. За колоните VARCHAR това обикновено няма голяма разлика, тъй като MySQL ще съхранява само толкова байтове, колкото е необходимо (освен ако не сте създали своите MyISAM таблици с ROW_FORMAT=FIXED).
Въпреки това, по време на изпълнение на заявка, MySQL може да създаде временни таблици в механизма за съхранение MEMORY, който не поддържа редове с променлива дължина. Тези временни таблици имат максимален размер и ако този размер е надвишен, временните таблици ще бъдат преобразувани в таблици в MyISAM/InnoDB (в зависимост от вашата версия на MySQL). Променливата на състоянието Created_tmp_disk_tables
ще се увеличава всеки път, когато това се случи. Ако е така, опитайте да видите дали това помага да увеличите стойността на max_heap_table_size
и tmp_table_size
.
Като алтернатива, надстройте до MySQL 8.0, където за вътрешни временни таблици се използва нов механизъм за съхранение, който поддържа редове с променлива дължина.