一尘不染

从数据库检索数据哪种方法更好

sql

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

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

Table 2包含每个用户拥有的汽车及其说明。即ColorRegistration No等等

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

方法1。

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

然后循环浏览列表并对其进行查询,并Table 2根据第一步中保存的用户从中获取数据。

方法2

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

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

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


阅读 193

收藏
2021-03-08

共1个答案

一尘不染

您的两种方法的性能大致相同(由于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将执行“合并联合”,其工作方式类似于合并联接。这种模式也适用于多级父子关系,尽管并非如此。

2021-03-08