Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Der Wechsel von varchar zu mediumtext führt zu Leistungseinbußen

Die beiden Datentypen werden praktisch identisch behandelt. Es gibt viele andere mögliche Gründe für Trägheit. (Aber keiner, den ich kenne, würde MEDIUMTEXT sagen ist schlimmer als VARHAR .)

Also... Mal sehen, ob wir die Webseite beschleunigen können...

Setzen Sie microtime(true) rund um die mysql-Aufrufe - um sicherzustellen, dass es sich um MySQL und nicht um PHP handelt. "0,019 Sekunden" macht Sinn; "1,5 - 2 Sekunden" hört sich an, als ob etwas in PHP vor sich geht.

Verwenden Sie InnoDB, nicht MyISAM. (Trotz Ihrer gegenteiligen Behauptungen.)

Richtig stimmen; sehen wir uns SHOW VARIABLES LIKE '%buffer%'; an Wie viel RAM hast du? (Austauschen ist für die Leistung schrecklich.)

Wie viele Zeilen geben Sie zurück? Es ist nicht praktikabel, mehr als ein paar Dutzend auf einer Webseite zu haben, also fügen Sie ORDER BY...LIMIT... hinzu .

Wenn das UI-Limit 1000 Zeichen beträgt, verwenden Sie TEXT oder VARCHAR(1000) , nicht MEDIUMTEXT . Wenn Sie versuchen, bis zu 64 KB (möglicherweise 4K utf8mb4 Zeichen ), dann verwenden Sie TEXT .

Sie benötigen dies (mit den Spalten in beliebiger Reihenfolge):

INDEX(part_id, language)

Wenn es in der MyISAM-Tabelle viele "Abwanderungen" (Löschungen und/oder Aktualisierungen gefolgt von weiteren Einfügungen) gegeben hat, können die Daten fragmentiert und daher langsam sein. Dies kann sowohl für VARCHAR passieren und TEXT . Bei InnoDB passiert das nicht.