最好使用SQL + JOINS或Stored Proc来组合多个查询的结果?

时间:2009-11-23 21:05:28

标签: sql sql-server

我正在创建一个表来汇总从大约8个左右的查询收集的数据,这些查询具有非常轻的逻辑/ WHERE子句,并且针对不同的表进行选择。

我想知道获取汇总数据的最佳选择是什么:

  • 一个包含多个JOINS的查询以收集所有相关信息
  • 一个存储过程,它封装逻辑并可能执行8个查询并以其他方式进行“加入”?这对我来说似乎更模块化和可维护......但我不确定。

我正在使用SQL Server 2008。有什么建议吗?

3 个答案:

答案 0 :(得分:4)

如果可以,那么使用通常的SQL方法。 Db已经过优化,可以运行它们。这种“以其他方式加入”可能需要使用游标来减慢一切。让数据库完成它的工作。如果您需要更高的性能,那么您应该检查执行计划并执行必须执行的操作(例如,添加索引)。

答案 1 :(得分:1)

数据库非常擅长确定执行SQL的最佳方式。这是他们的目的。使用存储过程以块的形式加载数据并自己组合它将使编写更加复杂,并且可能比让数据库为您执行此操作的效率低。

如果您担心在多个地方重复使用复杂查询,请考虑改为创建一个视图。

答案 2 :(得分:0)

根据桌子的大小,加入其中的8个可能非常毛茸茸。我会首先尝试这种方式 - 正如其他人所说的那样,数据库非常擅长计算这些东西。如果性能不如你想的那么好,我会尝试一个存储过程,它创建一个表变量(或临时表)并分别从8个表中的每个表中插入数据。然后,您可以将表变量的内容返回到您的应用程序。

此方法还可以使将来添加第9,10表等表更容易一些。它还为您提供了一种简单的方法,可以在将汇总数据返回到您的应用程序之前对其进行任何处理。