So sánh · Include hai collection và AsSplitQuery

Cartesian explosion: vì sao Include hai collection lại chậm

Include hai collection so với AsSplitQuery Một khách hàng có 10 contact và 20 lead: Include trong một câu JOIN trả 200 dòng, AsSplitQuery bắn ba câu lệnh trả 31 dòng rồi ghép ở client. INCLUDE × 2 · SINGLE QUERY 1 câu lệnh, dữ liệu bị nhân bản ASSPLITQUERY · 3 CÂU LỆNH 3 câu lệnh, không dòng nào lặp Customer 1 dòng Contacts 10 dòng Leads 20 dòng JOIN trong 1 câu SQL Include(Contacts).Include(Leads) 10 × 20 = 200 dòng cho 1 khách hàng × 100 khách = 20.000 dòng qua mạng Customer Câu 1 · 1 dòng Contacts Câu 2 · 10 dòng Leads Câu 3 · 20 dòng Ghép quan hệ ở client EF Core tự nối theo khoá 1 + 10 + 20 = 31 dòng cho 1 khách hàng × 100 khách = 3.100 dòng, đổi lấy 3 round trip CHÚ GIẢI 1 ô = 1 dòng kết quả · mỗi dòng của JOIN lặp đủ cột Customer + Contact + Lead © tiennhm