De två datatyperna hanteras praktiskt taget identiskt. Det finns många andra möjliga orsaker till tröghet. (Men ingen som jag känner till skulle säga MEDIUMTEXT
är sämre än VARHAR
.)
Så... Låt oss se om vi kan snabba upp webbsidan...
Sätt microtime(true)
runt mysql-anropen -- för att se till att det är MySQL, inte PHP. "0.019sek" är vettigt; "1,5 - 2 sekunder" låter som att något är på gång i PHP.
Använd InnoDB, inte MyISAM. (Trots dina påståenden om motsatsen.)
Ställ in rätt; låt oss se SHOW VARIABLES LIKE '%buffer%';
Hur mycket RAM-minne har du? (Att byta är fruktansvärt för prestanda.)
Hur många rader returnerar du? Det är inte praktiskt att ha mer än några dussin på en webbsida, så lägg till ORDER BY...LIMIT...
.
Om gränsen för användargränssnittet är 1000 tecken, använd TEXT
eller VARCHAR(1000)
, inte MEDIUMTEXT
. Om du försöker öka upp till 64K byte (potentiellt 4K utf8mb4 tecken ), använd sedan TEXT
.
Du behöver detta (med kolumnerna i endera ordningen):
INDEX(part_id, language)
Om det har förekommit mycket "churn" (raderingar och/eller uppdateringar följt av fler infogningar) i MyISAM-tabellen, kan data vara fragmenterad, därför långsam. Detta kan hända för både VARCHAR
och TEXT
. Detta händer inte med InnoDB.