Tengo una base de datos MySQL en la que cada usuario tiene una cuenta, y cada cuenta puede tener múltiples permisos.Rendimiento de MySQL: ¿Una sola consulta usando GROUP_CONCAT, o dos consultas separadas?
Mi objetivo final es terminar con el nombre de usuario de la cuenta y una lista delimitada por comas de identificadores de permisos. Hay dos maneras en que puedo lograr esto:
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
... o ...
SELECT username
FROM account
WHERE id = 1902;
SELECT permission_id
FROM account_permission
WHERE account_id = 1902
Con la sola consulta, consigo mis resultados exactamente como yo los quiero. Con dos consultas, tengo que crear la lista delimitada por comas en la aplicación (PHP) utilizando el segundo conjunto de resultados.
¿Hay alguna razón de rendimiento para NO elegir la primera opción? Nunca antes había usado GROUP_CONCAT, así que no sé las implicaciones de esto, en cuanto a rendimiento.