У меня есть 2 таблицы:
users (id, firstname, lastname, etc)
users_to_groups (user_id(index), group_id(index))
Я хотел бы сделать запрос, который возвращает записи, подобные следующим:
firstname lastname groups
John Smith 1,2,3,5
Tom Doe 3,5
Я использую функцию GROUP_CONCAT, и в настоящее время мой запросis:
SELECT * FROM users
LEFT OUTER JOIN
(
SELECT user_id, group_concat(group_id) FROM users_to_groups GROUP BY user_id
) AS i
ON users.id = i.user_id
Работает, но очень медленно.У меня 40 тыс. Пользователей и 260 тыс. Записей в таблице групп.Похоже, что запрос не использует индекс и проходит все 260 тыс. Строк для каждого пользователя.
Есть ли способ сделать это быстрее?Это займет 3 с лишним минуты, но я думаю, что не должно.
Спасибо!