S těmito dvěma datovými typy se zachází prakticky identicky. Existuje mnoho dalších možných důvodů pomalosti. (Ale žádný, o kterém vím, by neříkal MEDIUMTEXT je horší než VARHAR .)
Takže... Uvidíme, jestli dokážeme zrychlit webovou stránku...
Vložte microtime(true) kolem volání mysql -- abychom se ujistili, že jde o MySQL, nikoli PHP. "0,019 s" dává smysl; "1,5 - 2 sekundy" zní, jako by se v PHP něco dělo.
Používejte InnoDB, ne MyISAM. (Navzdory vašim tvrzením o opaku.)
Nalaďte správně; podívejme se SHOW VARIABLES LIKE '%buffer%'; Kolik máš RAM? (Výměna je z hlediska výkonu hrozná.)
Kolik řádků vracíte? Není praktické mít na webové stránce více než několik desítek, takže přidejte ORDER BY...LIMIT... .
Pokud je limit uživatelského rozhraní 1000 znaků, použijte TEXT nebo VARCHAR(1000) , nikoli MEDIUMTEXT . Pokud se pokoušíte získat až 64 kB (potenciálně 4K utf8mb4 znaky ), poté použijte TEXT .
Potřebujete toto (se sloupci v libovolném pořadí):
INDEX(part_id, language)
Pokud v tabulce MyISAM došlo k velkému „churn“ (smazání a/nebo aktualizace následované dalším vložením), data mohou být fragmentovaná, a tudíž pomalá. To se může stát pro oba VARCHAR a TEXT . To se s InnoDB nestane.