Gần đây, tôi đã thử nghiệm Redis và MongoDB và có vẻ như thường có những trường hợp bạn lưu trữ một mảng id trong MongoDB hoặc Redis. Tôi sẽ gắn bó với Redis cho câu hỏi này vì tôi đang hỏi về toán tử MySQL IN .
Tôi đã tự hỏi nó hoạt động như thế nào để liệt kê một số lượng lớn (300-3000) id bên trong toán tử IN, trông giống như sau:
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
Hãy tưởng tượng một cái gì đó đơn giản như một bảng sản phẩm và danh mục mà bạn thường có thể THAM GIA cùng nhau để lấy các sản phẩm từ một danh mục nhất định . Trong ví dụ trên, bạn có thể thấy rằng trong một danh mục nhất định trong Redis ( category:4:product_ids
), tôi trả về tất cả các id sản phẩm từ danh mục có id 4 và đặt chúng vào SELECT
truy vấn ở trên bên trong IN
toán tử.
Làm thế nào là hiệu suất này là?
Đây có phải là một tình huống "nó phụ thuộc"? Hoặc có cụ thể "điều này là (không) chấp nhận được" hoặc "nhanh" hoặc "chậm" hay tôi nên thêm một LIMIT 25
, hoặc điều đó không giúp được gì?
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
LIMIT 25
Hay tôi nên cắt bớt mảng id sản phẩm do Redis trả về để giới hạn nó ở 25 và chỉ thêm 25 id vào truy vấn thay vì 3000 và LIMIT
-ing nó thành 25 từ bên trong truy vấn?
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 25)
Bất kỳ đề xuất / phản hồi được đánh giá cao!