寻找的方法来限制​​需要tempdb空间。 难道一个视图有什么地方吗?

我们有执行上的数据量非常大的以下SQL图案的方法:

INSERT INTO Target SELECT Col1,Col2,Col33,Col44, (...) Col30 ,SUM(Col31) ,SUM(Col32) FROM SOURCE GROUP BY 1,2,3,4 ...30

由于大批源表和大量BY子句中的列组行的,这会导致非常高的tempdb空间使用率和在一个场合,我们跑出空位。

鉴于业务要求决定由通常的数列的分组,我们需要找到一种方法来减少tempdb空间,我们使用而不影响所产生的目标表,作为我们的主报告表的表现量。

我们想获得的sourceTable会的报告个月,然后创建一个游标中,我们单独循环,并从游标执行上面的SQL只有在Source.ReportingMonth = @CurrentReportingMonth而做到这一点,直到所有的ReportingMonths已被处理。 不幸的是,历史数据被允许改变,因此所有每个月的数据都必须在每次我们处理每月一次的周期时间检验。 每个月的数据是大​​约德相同体积。

当我们告诉我们的DBA,这是我们的意图,他的反应是:“我认为这是一个很好的开始,但是,如果产生的表基本上是用于报告和没有进一步的聚集,我们可能会更好过刚刚更换表以期因为有实际执行非常少聚集“。

我的想法是,鉴于仍然导致SQL的执行,并且由SQL转换为视图,性能可能会受到影响,因为SQL可以由所需要的数据报道说,曾经是一个永久保存多次执行持续的物理表。 在SQL Server中,是可以持续了性能方面的原因,以避免执行SQL多次了自己的看法? 如果我们只运行每月填充目标表中的一个过程,它有什么优势,然后再打开目标表到源表的看法?

Q1:是我们的想法cursoring一个合理的方法来寻求解决tempdb空间问题?

Q2:请问一个视图有什么地方吗?

注:我们还建议,用户识别,如果有那就是“够大”要归档的数据。

分类:SQL Server 2008中 时间:2015-03-15 人气:0
本文关键词: SQL Server 2008中
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.916 (s). 10 q(s)