sql >> Database teknologi >  >> RDS >> Mysql

Skift fra varchar til mediumtext forårsager ydeevneforringelse

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.




  1. Hvordan kan jeg med MySQL generere en kolonne, der indeholder postindekset i en tabel?

  2. Mysql tæller forekomst efter gruppe

  3. Sådan installeres og konfigureres ClickHouse på Ubuntu 20.04

  4. Problem ved hentning af poster med tomt array