GROUP_CONCAT - это, как правило, отличный способ упростить отчетность. Но для полей, содержащих много текста, это легко приведет к усечению правых данных (обрезается после, например, 1024 символов, в зависимости от того, настроен ли my.cnf group_concat_max_len). Хуже того, если поля (поля), которые являются GROUP_CONCAT, имеют тип BLOB (TEXT, LONGTEXT и т. Д.), То будет много RW на диск в качестве шаблонов. Однако, если поля, которые вы используете для GROUP_CONCAT, - это VARCHAR или INT, вы можете создавать огромные отчеты прямо из кэшированных данных индекса, используя только один запрос вместо нескольких, что может повысить производительность.
пример
SELECT
B.bookID,
B.bookTitle,
B.isbn,
GROUP_CONCAT(
CONCAT(
(IFNULL(R.review, "no reviews of this book")),
R.revierName)
ORDER BY R.stars
SEPARATOR "<br />"
) AS reviews
FROM books B
LEFT JOIN reviews R ON (B.bookID = R.bookID)
;
PS поправьте меня, если я ошибаюсь в том, как MySQL кеширует данные из агрегированных запросов.