我对选择两种方法感到困惑。
方案 有两个表Table 1,并Table 2分别。Table 1包含用户数据,例如名字,姓氏等
Table 1
Table 2
Table 2包含每个用户拥有的汽车及其说明。即Color,Registration No等等
Color
Registration No
现在,如果我想获得所有用户的所有信息,那么哪种方法最好在最短的时间内完成?
方法1。
查询其中的所有行,Table 1并将它们全部存储在ex的列表中。
然后循环浏览列表并对其进行查询,并Table 2根据第一步中保存的用户从中获取数据。
方法2
查询所有行,并在保存该行时从中获取所有值table 2并保存它们。
table 2
如果我想到系统过程,那么我认为可能是相同的,因为两种方法中没有相同的记录要处理。
如果还有其他更好的主意,请告诉我
您的两种方法的性能大致相同(由于N + 1个查询而变慢)。这样执行单个查询会更快:
select * from T1 left join T2 on ... order by T1.PrimaryKey
您的客户端应用程序可以让他们解释结果并使所有数据都在一个查询中。一种替代方法是:
select *, 1 as Tag from T1 union all select *, 2 as Tag from T2 order by T1.PrimaryKey, Tag
这只是伪代码,但您可以使其工作。
联合所有查询将具有令人惊讶的良好性能,因为sql Server将执行“合并联合”,其工作方式类似于合并联接。这种模式也适用于多级父子关系,尽管并非如此。