В конце концов я решил эту проблему путем реструктуризации схемы базы данных.
Корневая проблема была в поле books.author
, которое могло содержать несколько имен авторов, следовательно, CONCAT в начальном запросе.Я добавил новую таблицу, чтобы применить многие ко многим отношениям , где authors.id
и books.id
были связаны.
Тогда я использовал этот запрос вместо:
SELECT COUNT (*), items.full_name
FROM list_items
INNER JOIN
(SELECT books.title, authors.full_name
FROM books INNER JOIN relations ON books.ID = relations.book_id
INNER JOIN authors ON authors.ID = relations.author_id
) items ON items.title = list_items.book_title
GROUP BY items.full_name
ORDER BY COUNT (*) DESC;
Время выполнения сократилось до 0,4 секунд.