Mam bazę danych MySQL, w której każdy użytkownik ma konto, a każde konto może mieć wiele uprawnień.Wydajność MySQL: pojedyncze zapytanie przy użyciu GROUP_CONCAT lub dwa osobne zapytania?
Moim ostatecznym celem jest podanie nazwy użytkownika konta i rozdzielenie przecinkami listy identyfikatorów uprawnień. Istnieją dwa sposoby, można to osiągnąć:
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
... lub ...
SELECT username
FROM account
WHERE id = 1902;
SELECT permission_id
FROM account_permission
WHERE account_id = 1902
z jednolitym zapytania, otrzymuję moje wyniki dokładnie tak, jak ja chcę. Przy dwóch zapytaniach muszę utworzyć listę rozdzielaną przecinkami w aplikacji (PHP) za pomocą drugiego zestawu wyników.
Czy są jakieś powody, aby NIE wybrać pierwszej opcji? Nigdy wcześniej nie korzystałem z GROUP_CONCAT, więc nie znam jego konsekwencji, pod względem wydajności.