sql >> Databáze >  >> RDS >> Mysql

Změna z varchar na mediumtext způsobí snížení výkonu

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.




  1. MySQL a zamkněte tabulku, přečtěte si ji a pak ji ořízněte

  2. php mysql dnes, včera a datum z databáze

  3. WinDeath na notifyDataSetChanged()

  4. Příkazy MySqli nejsou synchronizovány; tento příkaz nyní nemůžete spustit