Oba typy danych są obsługiwane praktycznie identycznie. Istnieje wiele innych możliwych przyczyn spowolnienia. (Ale nikt, o którym wiem, nie powiedziałby MEDIUMTEXT
jest gorszy niż VARHAR
.)
Więc... Zobaczmy, czy możemy przyspieszyć działanie strony internetowej...
Umieść microtime(true)
wokół wywołań mysql -- aby upewnić się, że jest to MySQL, a nie PHP. „0,019 s” ma sens; „1,5 - 2 sekundy” brzmi jak coś się dzieje w PHP.
Używaj InnoDB, nie MójISAM. (Pomimo Twoich twierdzeń, że jest inaczej).
Dostrój poprawnie; zobaczmy SHOW VARIABLES LIKE '%buffer%';
Ile masz pamięci RAM? (Zamiana jest straszna dla wydajności.)
Ile wierszy zwracasz? Posiadanie więcej niż kilkudziesięciu na stronie internetowej nie jest praktyczne, więc dodaj ORDER BY...LIMIT...
.
Jeśli limit interfejsu użytkownika wynosi 1000 znaków, użyj TEXT
lub VARCHAR(1000)
, a nie MEDIUMTEXT
. Jeśli próbujesz podnieść do 64K bajtów (potencjalnie 4K utf8mb4 znaki ), a następnie użyj TEXT
.
Potrzebujesz tego (z kolumnami w dowolnej kolejności):
INDEX(part_id, language)
Jeśli w tabeli MyISAM wystąpiło wiele „odpływów” (usunięć i/lub aktualizacji, po których następuje więcej wstawek), dane mogą być pofragmentowane, a zatem powolne. Może się to zdarzyć dla obu VARCHAR
i TEXT
. Nie dzieje się tak w przypadku InnoDB.