Chỉ mục trên categoryId sẽ không hữu ích trong trường hợp này, các truy vấn IN (...) sẽ tạo ra quét theo trình tự thay vì tra cứu chỉ mục.
Trước tiên, tôi sẽ cân nhắc việc thiết kế lại hệ thống để loại bỏ nhiều lựa chọn danh mục và nếu nó không phù hợp, hãy lưu vào bộ nhớ đệm kết quả truy vấn.
Ví dụ:bạn có thể tạo một bảng trợ giúp items_category_groups (băm, item_id) và sau khi khách hàng truy vấn trên nhiều danh mục, hãy băm id kết hợp của chúng và tra cứu bảng này. Nếu không tìm thấy, hãy thực hiện một truy vấn đắt tiền và điền vào bảng này. Nếu tìm thấy, hãy thực hiện một truy vấn rẻ khi tham gia các bảng này. Các công cụ bộ nhớ đệm khác như memcached cũng sẽ hoạt động.