Os dois tipos de dados são tratados de forma praticamente idêntica. Existem muitas outras razões possíveis para a lentidão. (Mas nenhum que eu conheça que diga
MEDIUMTEXT é pior que VARHAR .) Então... Vamos ver se conseguimos acelerar a página da web...
Coloque
microtime(true) em torno das chamadas mysql -- para ter certeza de que é MySQL, não PHP. "0,019 segundos" faz sentido; "1,5 - 2 segundos" soa como algo acontecendo no PHP. Use InnoDB, não MeuISAM. (Apesar de suas alegações em contrário.)
Sintonize corretamente; vamos ver
SHOW VARIABLES LIKE '%buffer%'; Quanta memória RAM você tem? (A troca é terrível para o desempenho.) Quantas linhas você está retornando? Não é prático ter mais do que algumas dúzias em uma página da web, então adicione
ORDER BY...LIMIT... . Se o limite da interface do usuário for de 1.000 caracteres, use
TEXT ou VARCHAR(1000) , não MEDIUMTEXT . Se você estiver tentando aumentar até 64K bytes (potencialmente 4K utf8mb4 caracteres ), então use TEXT . Você precisa disso (com as colunas em qualquer ordem):
INDEX(part_id, language)
Se houver muitos "churn" (exclusões e/ou atualizações seguidas de mais inserções) na tabela MyISAM, os dados podem ser fragmentados, portanto, lentos. Isso pode acontecer tanto para
VARCHAR e TEXT . Isso não acontece com o InnoDB.