哪种方法更适合从数据库中检索数据

Afn*_*hir 3 c# sql

我对选择两种方法很困惑.

方案
有两个表Table 1,并Table 2分别.Table 1包含用户的数据,例如名字,姓氏等

Table 2包含每个用户拥有的汽车及其描述.即Color,Registration No

现在,如果我想获得所有用户的所有信息,那么最好在最短时间内完成哪种方法?

方法1.

查询所有行Table 1并将它们全部存储在列表中.

然后遍历列表并查询它并Table 2根据用户在第一步中保存的数据获取数据.

方法2

查询所有行,同时保存该行从中获取所有值table 2并保存它们.

如果我想到系统进程,那么我认为它可能是相同的,因为在这两种方法中都没有相同的处理记录.

如果还有其他更好的主意,请告诉我

usr*_*usr 6

您的两种方法将具有相同的性能(由于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.此模式也适用于多级父子关系,但不是很好.