ฉันมีรายการผลิตภัณฑ์ ผู้ให้บริการแต่ละรายจะถูกเสนอโดย N
ผู้ให้บริการแต่ละรายเสนอราคาให้เราตามวันที่เฉพาะเจาะจง ราคานั้นจะมีผลจนกว่าผู้ให้บริการรายนั้นจะตัดสินใจกำหนดราคาใหม่ ในกรณีนั้นผู้ให้บริการจะแจ้งราคาใหม่พร้อมวันที่ใหม่
ส่วนหัวของตาราง MySQL ในปัจจุบันดูเหมือนว่า:
provider_id, product_id, price, date_price_effective
ทุก ๆ วันเราจะรวบรวมรายการผลิตภัณฑ์ / ราคาที่มีผลสำหรับวันปัจจุบัน สำหรับแต่ละผลิตภัณฑ์รายการจะมีรายการที่เรียงลำดับของผู้ให้บริการที่มีผลิตภัณฑ์นั้น ๆ ด้วยวิธีนี้เราสามารถสั่งซื้อผลิตภัณฑ์บางอย่างจากใครก็ตามที่เสนอราคาที่ดีที่สุด
เพื่อให้ได้ราคาที่มีประสิทธิภาพผมมีคำสั่ง SQL date_price_effective >= NOW()
ที่ส่งกลับแถวทั้งหมดที่มี ชุดผลลัพธ์นั้นถูกประมวลผลด้วยสคริปต์ ruby ซึ่งทำการเรียงลำดับและกรองข้อมูลที่จำเป็นเพื่อรับไฟล์ที่มีลักษณะดังนี้:
product_id_1,provider_1,provider_3,provider8,provider_10...
product_id_2,provider_3,provider_2,provider1,provider_10...
มันใช้งานได้ดีสำหรับวัตถุประสงค์ของเรา แต่ฉันยังคงมีอาการคันที่ตาราง SQL อาจไม่ใช่วิธีที่ดีที่สุดในการจัดเก็บข้อมูลประเภทนี้ ฉันมีความรู้สึกว่าปัญหาแบบนี้ได้รับการแก้ไขก่อนหน้านี้ในรูปแบบที่สร้างสรรค์มากขึ้น
มีวิธีที่ดีกว่าในการจัดเก็บข้อมูลนี้นอกเหนือจากใน SQL? หรือถ้าใช้ SQL มีวิธีที่ดีกว่าที่ฉันใช้อยู่หรือไม่?