Я установил плагин и провел оптимизацию на бэкэнде (SSD, индексация по одному столбцу для столбцов, вызываемых в GROUP BY & WHERE), но при выполнении этого запроса
SELECT u.user_id, u.profile_page_id, u.server_id AS user_server_id, u.user_name, u.full_name, u.gender, u.user_image, u.is_invisible, u.user_group_id, u.language_id, u.birthday, u.country_iso, m.*
FROM(
(SELECT m.*
FROM phpfox_channel_video AS m
INNER JOIN phpfox_channel_category AS mc
ON(mc.category_id = mc.category_id)
INNER JOIN phpfox_channel_category_data AS mcd
ON(mcd.video_id = m.video_id)
WHERE m.in_process = 0 AND m.view_id = 0 AND m.module_id = 'videochannel' AND m.item_id = 0 AND m.privacy IN(0) AND mcd.category_id = 17
GROUP BY m.video_id
ORDER BY m.time_stamp DESC
)) AS m
JOIN phpfox_user AS u
ON(u.user_id = m.user_id)
ORDER BY m.time_stamp DESC
LIMIT 24;
это занимает 20 секунд вместо этого вместо этого
SELECT u.user_id, u.profile_page_id, u.server_id AS user_server_id, u.user_name, u.full_name, u.gender, u.user_image, u.is_invisible, u.user_group_id, u.language_id, u.birthday, u.country_iso, m.*
FROM(
(SELECT m.*
FROM phpfox_channel_video AS m
INNER JOIN phpfox_channel_category_data AS mcd
ON(mcd.video_id = m.video_id AND mcd.category_id = 17)
WHERE m.in_process = 0 AND m.view_id = 0 AND m.module_id = 'videochannel' AND m.item_id = 0 AND m.privacy IN(0)
GROUP BY m.video_id
ORDER BY m.time_stamp DESC
)) AS m
JOIN phpfox_user AS u
ON(u.user_id = m.user_id)
ORDER BY m.time_stamp DESC
LIMIT 24;
Это работает около 5-6 секунд
. phpfox_channel_video содержит 2 миллиона строк (и будет продолжать быстро добавлять его, его сайт в социальных сетях и пользователь может загружать файлы тоже), поэтому кэширование не совсем полезно (но активировано).
Есть какие-нибудь советы, как это оптимизировать? У меня минимальный опыт работы с MariaDB / MySQL, так как я привык к MS SQL для больших данных и создания собственной структуры. Любой рекомендуемый метод, не требующий значительного изменения таблиц (добавление таблиц в порядке).
Или мне нужно реструктурировать таблицу PHP &, чтобы оптимизировать запрос так, чтобы он был ниже 1 секунды / запрос. Спасибо!
Я нашел эти ссылки http://mysql.rjweb.org/doc.php/memory & http://mysql.rjweb.org/doc.php/ricksrots#indexing
Они все еще актуальны?
прилагается это результаты объяснения
А что касается индекса, текущая конфигурация настроена так, чтобы индексировать каждый столбец, указанный как ключ индекса, все все таблицы, задействованные в запросе выше.
Будет ли полезна распечатка моей текущей конфигурации сервера? Спасибо!