हम एक वेबसाइट चलाते हैं जिसमें एक तालिका में 250MM पंक्तियाँ होती हैं और दूसरी तालिका में जो हम इसमें शामिल होते हैं वह अधिकांश प्रश्नों के लिए सिर्फ 15MM पंक्तियों के अंतर्गत होती है।
नमूना संरचनाएं:
MasterTable (Id, UserId, Created, Updated...) -- 15MM Rows
DetailsTable (Id, MasterId, SomeColumn...) -- 250MM Rows
UserTable (Id, Role, Created, UserName...) -- 12K Rows
हमें नियमित रूप से इन सभी तालिकाओं के खिलाफ कुछ प्रश्न करने होंगे। एक मुफ्त उपयोगकर्ताओं (~ 10k मुक्त उपयोगकर्ताओं) के लिए आंकड़े हड़प रहा है।
Select Count(1) from DetailsTable dt
join MasterTable mt on mt.Id = dt.MasterId
join UserTable ut on ut.Id = mt.UserId
where ut.Role is null and mt.created between @date1 and @date2
समस्या यह है कि यह प्रश्न इस तथ्य के कारण होगा कि जॉन्स लंबे समय से बहुत लंबे समय से चल रहे हैं।
इस मामले में यह जुड़ाव या संभवतः के बजाय wheres का उपयोग करने के लिए समझदार होगा where column in(...)
?