您的两种方法的性能大致相同(由于N + 1个查询而变慢)。这样执行单个查询会更快:
select *from T1left join T2 on ...order by T1.PrimaryKey
您的客户端应用程序可以让他们解释结果并使所有数据都在一个查询中。一种替代方法是:
select *, 1 as Tagfrom T1union allselect *, 2 as Tagfrom T2order by T1.PrimaryKey, Tag
这只是伪代码,但您可以使其工作。
联合所有查询将具有令人惊讶的良好性能,因为sql Server将执行“合并联合”,其工作方式类似于合并联接。这种模式也适用于多级父子关系,尽管并非如此。



