我正在创建一个表来汇总从大约8个左右的查询收集的数据,这些查询具有非常轻的逻辑/ WHERE子句,并且针对不同的表进行选择。
我想知道获取汇总数据的最佳选择是什么:
我正在使用SQL Server 2008。有什么建议吗?
答案 0 :(得分:4)
如果可以,那么使用通常的SQL方法。 Db已经过优化,可以运行它们。这种“以其他方式加入”可能需要使用游标来减慢一切。让数据库完成它的工作。如果您需要更高的性能,那么您应该检查执行计划并执行必须执行的操作(例如,添加索引)。
答案 1 :(得分:1)
数据库非常擅长确定执行SQL的最佳方式。这是他们的目的。使用存储过程以块的形式加载数据并自己组合它将使编写更加复杂,并且可能比让数据库为您执行此操作的效率低。
如果您担心在多个地方重复使用复杂查询,请考虑改为创建一个视图。
答案 2 :(得分:0)
根据桌子的大小,加入其中的8个可能非常毛茸茸。我会首先尝试这种方式 - 正如其他人所说的那样,数据库非常擅长计算这些东西。如果性能不如你想的那么好,我会尝试一个存储过程,它创建一个表变量(或临时表)并分别从8个表中的每个表中插入数据。然后,您可以将表变量的内容返回到您的应用程序。
此方法还可以使将来添加第9,10表等表更容易一些。它还为您提供了一种简单的方法,可以在将汇总数据返回到您的应用程序之前对其进行任何处理。