De to datatyper håndteres stort set identisk. Der er mange andre mulige årsager til træghed. (Men ingen, jeg kender til, ville sige MEDIUMTEXT
er værre end VARHAR
.)
Så... Lad os se, om vi kan fremskynde websiden...
Indsæt microtime(true)
omkring mysql-kaldene -- for at sikre, at det er MySQL, ikke PHP. "0,019 sek" giver mening; "1,5 - 2 sekunder" lyder som om der foregår noget i PHP.
Brug InnoDB, ikke MyISAM. (På trods af dine påstande om det modsatte.)
Indstil korrekt; lad os se SHOW VARIABLES LIKE '%buffer%';
Hvor meget RAM har du? (At bytte er forfærdeligt for ydeevne.)
Hvor mange rækker returnerer du? Det er ikke praktisk at have mere end et par dusin på en webside, så tilføj ORDER BY...LIMIT...
.
Hvis brugergrænsefladen er 1000 tegn, skal du bruge TEXT
eller VARCHAR(1000)
, ikke MEDIUMTEXT
. Hvis du forsøger at øge op til 64K bytes (potentielt 4K utf8mb4 tegn ), og brug derefter TEXT
.
Du har brug for dette (med kolonnerne i begge rækkefølge):
INDEX(part_id, language)
Hvis der har været meget "churn" (sletninger og/eller opdateringer efterfulgt af flere indsættelser) i MyISAM-tabellen, kan dataene blive fragmenteret, og derfor langsomme. Dette kan ske for både VARCHAR
og TEXT
. Dette sker ikke med InnoDB.