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

时间:2011-05-21 09:17:44

标签: c# sql

我对选择两种方法感到困惑。

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

Table 2包含每个用户拥有其描述的汽车。即ColorRegistration No

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

方法1。

查询Table 1中的所有行,并将它们全部存储在ex。

的列表中

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

方法2

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

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

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

1 个答案:

答案 0 :(得分:6)

您的两种方法将具有相同的性能(由于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

这只是伪代码,但你可以使它工作。

union-all查询将具有令人惊讶的良好性能,因为sql server将执行“merge union”,其工作方式类似于merge-join。此模式也适用于多级父子关系,但不是很好。