Двата типа данни се обработват практически идентично. Има много други възможни причини за мудността. (Но никой, който познавам, не би казал MEDIUMTEXT
е по-лошо от VARHAR
.)
Така че... Да видим дали можем да ускорим уеб страницата...
Поставете microtime(true)
около извикванията на mysql - за да се уверите, че това е MySQL, а не PHP. "0,019 секунди" има смисъл; "1,5 - 2 секунди" звучи сякаш нещо се случва в PHP.
Използвайте InnoDB, не MyISAM. (Въпреки твърденията ви за обратното.)
Настройте правилно; нека видим SHOW VARIABLES LIKE '%buffer%';
Колко RAM имате? (Смяната е ужасна за производителност.)
Колко реда връщате? Не е практично да имате повече от няколко десетки на уеб страница, така че добавете ORDER BY...LIMIT...
.
Ако ограничението на потребителския интерфейс е 1000 знака, използвайте TEXT
или VARCHAR(1000)
, а не MEDIUMTEXT
. Ако се опитвате да увеличите до 64K байта (потенциално 4K utf8mb4 символи ), след което използвайте TEXT
.
Имате нужда от това (с колоните в който и да е ред):
INDEX(part_id, language)
Ако е имало много "изместване" (изтривания и/или актуализации, последвани от повече вмъквания) в таблицата MyISAM, данните могат да бъдат фрагментирани, следователно бавни. Това може да се случи както за VARCHAR
и TEXT
. Това не се случва с InnoDB.