我们在DB2中为每个客户提供了单独的数据库,但每个客户都有相同的表结构。对于.Net应用程序,我需要扫描所有数据库并向用户显示匹配条目的结果。我想知道为所有数据库执行UNION ALL或者并行运行每个查询然后从我的.Net应用程序中组合它们会更快。
Select EmpName, EmpSal, EmpDate
from A.Emptable
where EmpDate > '2015-01-01'
UNION ALL
Select EmpName, EmpSal, EmpDate
from B.Emptable
where EmpDate > '2015-01-01'
UNION ALL
Select EmpName, EmpSal, EmpDate
from C.Emptable
where EmpDate > '2015-01-01'
VS。
创建.net方法GetEmpData以调用每个查询并将其结果组合为:
var response = await Task.WhenAll(GetEmpData(A,'2015-01-01'),GetEmpData(B,'2015-01-01'),GetEmpData(C,'2015-01-01'));
var result = response[0].Concat(response[1]).Concat(response[2]).ToList();
感谢。
答案 0 :(得分:0)
如果您的联盟针对所有方面(尤其是下推和性能方面)进行了最佳配置,那么我希望UNION ALL在长期内更易于维护。至于相对表现,你可以衡量,因为有很多因素会影响它。