我对选择两种方法很困惑.
方案
有两个表Table 1,并Table 2分别.Table 1包含用户的数据,例如名字,姓氏等
Table 2包含每个用户拥有的汽车及其描述.即Color,Registration No等
现在,如果我想获得所有用户的所有信息,那么最好在最短时间内完成哪种方法?
方法1.
查询所有行Table 1并将它们全部存储在列表中.
然后遍历列表并查询它并Table 2根据用户在第一步中保存的数据获取数据.
方法2
查询所有行,同时保存该行从中获取所有值table 2并保存它们.
如果我想到系统进程,那么我认为它可能是相同的,因为在这两种方法中都没有相同的处理记录.
如果还有其他更好的主意,请告诉我
您的两种方法将具有相同的性能(由于N + 1查询而缓慢).像这样执行单个查询会更快:
select *
from T1
left join T2 on ...
order by T1.PrimaryKey
Run Code Online (Sandbox Code Playgroud)
您的客户端应用程序可以解释结果并将所有数据放在一个查询中.另一种选择是:
select *, 1 as Tag
from T1
union all
select *, 2 as Tag
from T2
order by T1.PrimaryKey, Tag
Run Code Online (Sandbox Code Playgroud)
这只是伪代码,但你可以使它工作.
union-all查询将具有令人惊讶的良好性能,因为sql server将执行"merge union",其工作方式类似于merge-join.此模式也适用于多级父子关系,但不是很好.
| 归档时间: |
|
| 查看次数: |
180 次 |
| 最近记录: |