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.