Saya telah bereksperimen dengan Redis dan MongoDB akhir-akhir ini dan tampaknya sering kali ada kasus di mana Anda akan menyimpan berbagai id di MongoDB atau Redis. Saya akan tetap menggunakan Redis untuk pertanyaan ini karena saya bertanya tentang operator MySQL IN .
Saya bertanya-tanya bagaimana kinerjanya untuk mencantumkan sejumlah besar (300-3000) id di dalam operator IN, yang akan terlihat seperti ini:
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
Bayangkan sesuatu yang sederhana seperti tabel produk dan kategori yang biasanya Anda GABUNG bersama untuk mendapatkan produk dari kategori tertentu . Dalam contoh di atas Anda dapat melihat bahwa di bawah kategori tertentu di Redis ( category:4:product_ids
) saya mengembalikan semua id produk dari kategori dengan id 4, dan menempatkannya di SELECT
kueri di atas di dalam IN
operator.
Bagaimana performanya?
Apakah ini situasi yang "tergantung"? Atau apakah ada yang konkret "ini (tidak) dapat diterima" atau "cepat" atau "lambat" atau haruskah saya menambahkan LIMIT 25
, atau tidakkah itu membantu?
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
LIMIT 25
Atau haruskah saya memangkas larik id produk yang dikembalikan oleh Redis untuk membatasinya menjadi 25 dan hanya menambahkan 25 id ke kueri daripada 3000 dan LIMIT
-ing ke 25 dari dalam kueri?
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 25)
Setiap saran / umpan balik sangat dihargai!