2010-01-06 24 views
1

比方说,我需要发出大量查询针对关系数据库,它的下面是从性能的角度看更好:DB性能:多个连接VS加入/子选择

  1. 一个向他们发出一个,能够使用来自第一个数据的数据作为第二个数据的输入(意味着建立了多个连接,但是较少的连接/子选择)。

  2. 将这些命令集中在一起(这意味着只有一个连接,但在实际查询中有更多连接/子查询)。

我希望和思考2号在这里,但希望它证实了,也许一些论据来支持它...

我使用SQL Server 2008,但我想这个问题应该是大多数数据库平台(?)通用的。

编辑: 我知道这是一个非常普遍的问题,因此我正在寻找一般输入/答案。

回答

1

这个问题真的没有一个通用的答案。

有时,最好写一些简单的查询,以逐步得到结果,你在1

有时,最好写一个复杂的SQL查询,如2,并且让RDBMS”优化决定怎么去形容结果最有效。

不知道任何关于您试图解决的问题的性质,最一般的建议是您应该尝试这两种技术,并根据实际的数据集来衡量性能。测量结果包括原始计时和分析优化程序计划的报告。

SQL Server 2008具有帮助分析查询并提供性能优化建议的工具。

3

我会尽可能地避免一个健谈的设计(多个数据库往返)。网络延迟是一种性能杀手,考虑到您提供的两种选择,选项#2是一个简单的选择。但是,我假设连接/子查询不是不寻常的。