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.