sql >> Databasteknik >  >> RDS >> Mysql

Att byta från varchar till mediumtext orsakar prestandaförsämring

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.




  1. Anslut PHP till MSSQL via PDO ODBC

  2. Hur lagrar man .pdf-filer i MySQL som BLOB-filer med PHP?

  3. Hur kör jag PHP som är lagrad i en MySQL-databas?

  4. Hur anger jag bokstavligt datum när jag skriver SQL-fråga från SQL Server som är länkad till Oracle?