Db性能:多个连接与连接/子选择

时间:2010-01-06 07:34:46

标签: performance rdbms

假设我需要针对关系数据库发出一些查询,从性能角度来看,以下哪个更好:

  1. 逐个发布它们,能够使用第一个数据作为次要数据的输入(意味着建立了多个连接,但连接/子选择较少)。

  2. 将命令组合在一起(意味着实际查询中只有一个连接但有更多连接/子选择)。

  3. 我希望并在这里思考第二,但是希望它得到确认,也许还有一些论据支持它......

    我正在使用SQL Server 2008,但我想这个问题应该适用于大多数数据库平台(?)。

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

2 个答案:

答案 0 :(得分:3)

我会尽可能避免繁琐的设计(多次DB往返)。对于您提供的2个选择,网络延迟是一种性能杀手,选项#2是最简单的选择。但是,我假设连接/子选择并非与众不同。

答案 1 :(得分:1)

这个问题确实没有一刀切的答案。

有时最好编写几个更简单的查询,以便按照1中的描述逐步获得结果。

有时最好像2中那样编写复杂的SQL查询,让RDBMS的优化器决定如何最有效地获得结果。

在不了解您尝试解决的问题的本质的情况下,最一般的建议是您应该尝试这两种技术,并根据实际数据集衡量性能。测量包括原始时间,还包括优化器计划的报告。

SQL Server 2008还提供了一些工具来帮助分析查询并提供性能优化建议。