นอกจากว่าฉันเข้าใจผิดอย่างจริงจังตรรกะในคำถามนั้นมีข้อบกพร่องมาก
หากมี 20 แถวใน B สำหรับแต่ละ A, 1,000 แถวใน A หมายถึง 20k แถวใน B ไม่สามารถมีเพียง 100 แถวใน B เว้นแต่จะมีตารางจำนวนมาก "AB" ที่มี 20k แถวที่มีการแมป .
ดังนั้นเพื่อให้ได้ข้อมูลทั้งหมดเกี่ยวกับ 20 จาก 100 B แถวแมปไปยังแต่ละแถวคุณตาราง AB เกินไป ดังนั้นนี่อาจเป็น:
- ชุดผลลัพธ์ 3 แถวคือ 100, 1,000 และ 20k และลูกค้าเข้าร่วม
- ผลลัพธ์ A-AB-B ที่รวมเข้ากับชุด 20k แถว
ดังนั้น "เข้าร่วม" ในไคลเอนต์จะเพิ่มมูลค่าใด ๆ เมื่อคุณตรวจสอบข้อมูล ไม่ใช่ว่าไม่ใช่ความคิดที่เลว ถ้าฉันได้รับวัตถุหนึ่งชิ้นจากฐานข้อมูลบางทีมันอาจจะเหมาะสมกว่าที่จะแยกมันออกเป็นชุดผลลัพธ์แยกกัน สำหรับการเรียกประเภทรายงานฉันจะแบนมันออกเป็นหนึ่งเดียวเกือบตลอดเวลา
ไม่ว่าในกรณีใดฉันจะบอกว่าแทบจะไม่มีประโยชน์อะไรเลยสำหรับการรวมข้ามขนาดนี้ มันเป็นตัวอย่างที่ไม่ดี
คุณต้องเข้าร่วมที่ไหนสักแห่งและนั่นคือสิ่งที่ RDBMS ทำได้ดี ฉันไม่ต้องการทำงานกับรหัสลูกค้าลิงที่คิดว่าพวกเขาสามารถทำได้ดีกว่า
ภายหลัง:
หากต้องการเข้าร่วมในไคลเอนต์ต้องมีวัตถุถาวรเช่น DataTables (ใน. net) หากคุณมีชุดผลลัพธ์หนึ่งชุดมันสามารถถูกใช้ผ่านสิ่งที่เบากว่าเช่น DataReader ปริมาณสูง = ทรัพยากรไคลเอ็นต์จำนวนมากที่ใช้เพื่อหลีกเลี่ยงฐานข้อมูลที่เข้าร่วม