I due tipi di dati vengono gestiti in modo praticamente identico. Ci sono molte altre possibili ragioni per la lentezza. (Ma nessuno che io sappia direbbe MEDIUMTEXT
è peggio di VARHAR
.)
Allora... vediamo se riusciamo a velocizzare la pagina web...
Inserisci microtime(true)
intorno alle chiamate mysql -- per assicurarsi che sia MySQL, non PHP. "0,019 secondi" ha senso; "1.5 - 2 secondi" suona come qualcosa che sta succedendo in PHP.
Usa InnoDB, non Il mio ISAM. (Nonostante le tue affermazioni contrarie.)
Sintonizzare correttamente; vediamo SHOW VARIABLES LIKE '%buffer%';
Quanta RAM hai? (Lo scambio è terribile per le prestazioni.)
Quante righe stai restituendo? Non è pratico avere più di qualche dozzina su una pagina web, quindi aggiungi ORDER BY...LIMIT...
.
Se il limite dell'interfaccia utente è di 1000 caratteri, utilizza TEXT
o VARCHAR(1000)
, non MEDIUMTEXT
. Se stai cercando di aumentare fino a 64.000 byte (potenzialmente 4K utf8mb4 caratteri ), quindi usa TEXT
.
Ti serve questo (con le colonne in entrambi gli ordini):
INDEX(part_id, language)
Se c'è stato molto "abbandono" (eliminazioni e/o aggiornamenti seguiti da più inserimenti) nella tabella MyISAM, i dati possono essere frammentati, quindi lenti. Questo può accadere sia per VARCHAR
e TEXT
. Questo non accade con InnoDB.