Tôi có cơ sở dữ liệu MySQL, trong đó mỗi người dùng có một tài khoản và mỗi tài khoản có thể có nhiều quyền.Hiệu suất MySQL: Truy vấn đơn lẻ bằng cách sử dụng GROUP_CONCAT hoặc hai truy vấn riêng biệt?
Mục tiêu cuối cùng của tôi là kết thúc bằng tên người dùng của tài khoản và danh sách các id quyền hạn được phân cách bằng dấu phẩy. Có hai cách tôi có thể thực hiện điều này:
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
... hoặc ...
SELECT username
FROM account
WHERE id = 1902;
SELECT permission_id
FROM account_permission
WHERE account_id = 1902
Với truy vấn duy nhất, tôi nhận được kết quả của tôi chính xác như tôi muốn họ. Với hai truy vấn, tôi phải tạo danh sách được phân tách bằng dấu phẩy trong ứng dụng (PHP) bằng cách sử dụng tập kết quả thứ hai.
Có bất kỳ lý do hiệu suất nào KHÔNG chọn tùy chọn đầu tiên không? Tôi chưa bao giờ sử dụng GROUP_CONCAT trước đây, vì vậy tôi không biết các tác động của nó, hiệu quả-khôn ngoan.