utf é realmente utfmb3 e pode usar no máximo 3 bytes por caractere, enquanto utfmb4 pode usar 4 bytes por caractere. Para colunas VARCHAR, isso normalmente não faz muita diferença, pois o MySQL armazenará apenas quantos bytes forem necessários (a menos que você tenha criado suas tabelas MyISAM com ROW_FORMAT=FIXED).
No entanto, durante a execução da consulta, o MySQL pode criar tabelas temporárias no mecanismo de armazenamento MEMORY que não suporta linhas de comprimento variável. Essas tabelas temporárias têm um tamanho máximo, e se esse tamanho for excedido, as tabelas temporárias serão convertidas em tabelas no MyISAM/InnoDB (dependendo da sua versão do MySQL). A variável de status
Created_tmp_disk_tables
será incrementado cada vez que isso acontecer. Se sim, tente ver se ajuda a aumentar o valor de max_heap_table_size
e tmp_table_size
. Alternativamente, atualize para o MySQL 8.0 onde um novo mecanismo de armazenamento que suporta linhas de comprimento variável é usado para tabelas temporárias internas.