У меня есть база данных MySQL, в которой у каждого пользователя есть учетная запись, и каждая учетная запись может иметь несколько разрешений.
Моя конечная цель - получить имя пользователя учетной записи и список идентификаторов разрешений через запятую. Есть два способа сделать это:
SELECT a.username, GROUP_CONCAT(rp.permission_id) as permission_ids
FROM account AS a
JOIN role_permission AS rp
ON rp.role_id = a.role_id
WHERE a.id = 1902
... или ...
SELECT username
FROM account
WHERE id = 1902;
SELECT permission_id
FROM account_permission
WHERE account_id = 1902
С помощью одного запроса я получаю свои результаты именно так, как я хочу. С помощью двух запросов мне нужно создать в приложении список с разделителями-запятыми (PHP), используя второй набор результатов.
Есть ли какие-либо причины для производительности, чтобы НЕ выбрать первый вариант? Я никогда раньше не использовал GROUP_CONCAT, поэтому не знаю, как это повлияет на производительность.