Mysql
 sql >> Database >  >> RDS >> Mysql

Il passaggio da varchar a mediumtext causa un degrado delle prestazioni

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.