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.