utf är egentligen utfmb3 och får använda max 3 byte per tecken medan utfmb4 får använda 4 byte per tecken. För VARCHAR-kolumner gör detta normalt inte så stor skillnad eftersom MySQL bara lagrar så många byte som behövs (såvida du inte har skapat dina MyISAM-tabeller med ROW_FORMAT=FIXED).
Men under körning av en fråga kan MySQL skapa tillfälliga tabeller i lagringsmotorn MEMORY som inte stöder rader med variabel längd. Dessa temporära tabeller har en maximal storlek, och om den storleken överskrids kommer de temporära tabellerna att konverteras till tabeller i MyISAM/InnoDB (beroende på din version av MySQL). Statusvariabeln Created_tmp_disk_tables
kommer att ökas varje gång detta händer. Om så är fallet, försök att se om det hjälper att öka värdet på max_heap_table_size
och tmp_table_size
.
Alternativt kan du uppgradera till MySQL 8.0 där en ny lagringsmotor som stöder rader med variabel längd används för interna temporära tabeller.