Еще проще:
SELECT 1 AS id,
GROUP_CONCAT(DISTINCT content) AS letters
FROM docs
WHERE x_id = 1
Однако, я подозреваю, вы слишком упростили запрос.Так что это упрощение может не полностью применяться.
В любом случае, старайтесь не рассматривать «подзапрос» как решение проблем.Обратите внимание, что вам нужно 2 подзапроса, но я сделал это в 0. И это, вероятно, намного быстрее.
Для дальнейшего ускорения измените INDEX(x_id)
на INDEX(x_id, content)
.
"Использование файловой сортировки"и" Использование временного " не конец света.В некоторых запросах они абсолютно необходимы.Кроме того, «сортировка файлов» обычно выполняется в ОЗУ;ни один диск не пострадал при съемке этого запроса.Я думаю, что мои запросы и INDEX
все равно их избегают.
Внимание: для GROUP_CONCAT
установлено ограничение по умолчанию в 1024 *.Смотри group_concat_max_len
.