-6

我有一个相对简单的问题。

我有数据集 A 和数据集 B,它们的结构都相同。

最终结果将是数据集 A 和数据集 B 的联合,我们将其称为数据集 C。

但在最终版本之前,需要通过加入数据集 X 来过滤最终数据集。

问题是我应该在数据集 X 上加入数据集 A,在数据集 X 上加入数据集 B,然后将所有 A 和 B 合并,还是应该将所有 A 和 B 合并到 C 中,然后在 X 上加入 C。

什么更快,内存效率更高等?

提前致谢!

4

3 回答 3

5

这取决于很多事情,不可能从你的问题中说出来:索引、统计、INNER 或 OUTER JOIN、数据类型。你必须知道更多,即使那样你真的需要比较执行计划。

因为我不喜欢重复自己,所以出于维护原因,我可能会在 UNION 之外进行 JOIN,但如果我必须打赌,我可能会打赌先加入的联接可以胜过它 - 特别是如果联接减少了行数急剧增加。

于 2012-10-30T18:22:00.163 回答
1

我的直觉是将两者都加入 x 然后合并结果。这样,sql server 优化器就有更好的机会提供最佳查询计划,但这可能是您同时编写两者的情况,检查执行计划和时间以真正看到差异。

于 2012-10-30T18:19:59.557 回答
1

我真的很想看看两者的执行计划,看看什么需要更少的时间/资源。

这是一个很棒的入门视频,介绍了如何开始在 SQL Authority 上进行性能调优。一个从来没有得到足够关注的话题。

在优化的演变过程中监控执行计划是一项很棒的技术,因为它确实深入研究了向您展示进一步的索引和其他调整技术是否以及如何在您的执行中获得回报。

于 2012-10-30T18:23:23.320 回答