Bạn có thể loại bỏ các vấn đề về hiệu suất của nhóm và đếm nếu bạn lưu trữ thông tin đó ở đâu đó. Bạn có thể thêm một cột vào Sản phẩm có tên là total_categories
điều đó sẽ cho bạn biết sản phẩm tham gia vào bao nhiêu danh mục. Sau đó, bạn chỉ cần nói where total_categories = 4
. Điều này có thể khó duy trì hơn nếu các sản phẩm thường xuyên thay đổi danh mục của chúng vì bạn phải liên tục cập nhật trường này một cách chính xác - và sau đó bạn phải quyết định xem bạn muốn làm điều đó trong mã ứng dụng hoặc trong trình kích hoạt hoặc trong một quy trình được lưu trữ ...
Thông thường, tôi sẽ không nghĩ rằng việc lưu trữ siêu dữ liệu như vậy trực tiếp trong một bảng là một ý tưởng hay, nhưng nếu hiệu suất thì thực sự tệ đó, nó có thể đáng xem xét.