ฉันได้ทดลองกับ Redis และ MongoDB เมื่อไม่นานมานี้และดูเหมือนว่ามักจะมีหลายกรณีที่คุณจะเก็บอาร์เรย์ของidไว้ใน MongoDB หรือ Redis ฉันจะติดกับ Redis สำหรับคำถามนี้ตั้งแต่ฉันถามเกี่ยวกับ MySQL ในการประกอบการ
ฉันสงสัยว่านักแสดงเป็นอย่างไรในการแสดงรายการIDจำนวนมาก (300-3000) ในตัวดำเนินการ IN ซึ่งจะมีลักษณะดังนี้:
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
ลองนึกภาพง่ายๆอย่างตารางผลิตภัณฑ์และหมวดหมู่ซึ่งโดยปกติคุณอาจเข้าร่วมด้วยกันเพื่อรับผลิตภัณฑ์จากหมวดหมู่หนึ่งๆ ในตัวอย่างด้านบนคุณจะเห็นว่าภายใต้หมวดหมู่ที่กำหนดใน Redis ( category:4:product_ids
) ฉันส่งคืนรหัสผลิตภัณฑ์ทั้งหมดจากหมวดหมู่ด้วยรหัส 4 และวางไว้ในSELECT
ข้อความค้นหาด้านบนภายในตัวIN
ดำเนินการ
นักแสดงเป็นอย่างไร?
นี่คือสถานการณ์ "ขึ้นอยู่กับ" หรือไม่? หรือมีรูปธรรม "นี่คือ (ไม่) ยอมรับ" หรือ "เร็ว" หรือ "ช้า" หรือฉันควรเพิ่ม a LIMIT 25
หรือไม่ช่วย?
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
LIMIT 25
หรือฉันควรตัดอาร์เรย์ของรหัสผลิตภัณฑ์ที่ Redis ส่งคืนเพื่อ จำกัด ไว้ที่ 25 และเพิ่มเพียง 25 id ในแบบสอบถามแทนที่จะเป็น 3000 และกำหนดLIMIT
ให้เป็น 25 จากภายในแบบสอบถาม
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 25)
ข้อเสนอแนะ / ข้อเสนอแนะใด ๆ ชื่นชมมาก!