J'ai une base de données MySQL dans laquelle chaque utilisateur a un compte, et chaque compte peut avoir plusieurs autorisations.Performance MySQL: Requête unique utilisant GROUP_CONCAT, ou deux requêtes distinctes?
Mon but ultime est de me retrouver avec le nom d'utilisateur du compte, et une liste d'identifiants d'autorisations délimitée par des virgules. Il y a deux façons que je peux accomplir cette tâche:
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
... ou ...
SELECT username
FROM account
WHERE id = 1902;
SELECT permission_id
FROM account_permission
WHERE account_id = 1902
Avec la seule requête, je reçois mes résultats exactement comme je les veux. Avec deux requêtes, je dois créer la liste délimitée par des virgules dans l'application (PHP) en utilisant le second jeu de résultats.
Y a-t-il des raisons de performance de ne PAS choisir la première option? Je n'ai jamais utilisé GROUP_CONCAT auparavant, donc je ne connais pas les implications en termes de performances.