SELECT i.id, i.nameRu,
GROUP_CONCAT(DISTINCT g.title ORDER BY g.title SEPARATOR ', ') AS genres,
GROUP_CONCAT(DISTINCT c.title ORDER BY c.title SEPARATOR ', ') AS countries
FROM cms_movies i
LEFT JOIN cms_genres_bind AS gb ON gb.kid = i.id
LEFT JOIN cms_genres AS g ON gb.gid = g.id
LEFT JOIN cms_countries_bind AS cb ON cb.kid = i.id
LEFT JOIN cms_countries AS c ON cb.cid = c.id
GROUP BY i.id
ORDER BY i.id
LIMIT 0, 10
В данном запросе, если сортировать по полю ID или убрать ORDER BY вообще, то запрос выполняется за 0.0090 сек.
Если выполнять сортировку по полю year, у которого проставлен индекс, то выполнение занимает 3.1150 сек.
Как можно решить данную проблему? EXPLAIN прикладываю
Добавлено спустя 1 час
Решил проблему так:
SELECT i.id, i.nameRu,
(SELECT group_concat(g.title ORDER BY g.title ASC separator ', ' ) FROM cms_genres_bind gb JOIN cms_genres g ON gb.gid = g.id WHERE gb.kid = i.id) AS genres,
(SELECT group_concat(c.title ORDER BY c.title ASC separator ', ' ) FROM cms_countries_bind cb JOIN cms_countries c ON cb.cid = c.id WHERE cb.kid = i.id) AS countries,
FROM cms_movies i
ORDER BY i.year DESC
LIMIT 0, 15