临时数据库建议 - 使用临时表

时间:2015-06-11 04:24:23

标签: sql-server tempdb

我正在编写一份报告,结果是多个#temp表的组合。结构如下

  1. 存储过程1,其临时表提供0.5万行

  2. 存储过程2,其临时表为10万行

  3. 最后我需要结合上述2 SP的结果集,再次使用临时表并为报告创建一个最终结果集。现在我担心性能,后来如果数据增加,它会影响临时数据库。我们通常每月分阶段处理数据,数据库可能在一个月内包含大约100万行。临时数据库容纳的最大容量是多少。用上述方法会影响它吗?

2 个答案:

答案 0 :(得分:1)

首先,它不是关于行的大小的行数。因此,如果你每行有7KB,那么对于.6百万行,它大约是4 GB左右。现在,这不是结束,SQL Server使用TempDb来存储内部对象,版本对象和用户对象,这些对象也包含中间结果。在您的情况下,您可以预期大小增长超过4 GB。 有两种方法可以解决这个问题:

  1. 调整查询,最小化Temp表,表变量,CTE,VARCHAR(MAX)或游标等大对象的使用。
  2. 增加Tempdb文件大小。根据观察计算最大尺寸[重建建筑指数是最好的选择]
  3. 在现实世界中,查询本身总是有机会改进。通过正确连接表或使用视图来检查是否可以避免使用tempdb。

答案 1 :(得分:0)

tempdb的大小仅受存储它的磁盘大小的限制。 (或can be limited在数据库的属性中。)

至于100万行。如今它并不多,甚至还有一点点#34;特别是,如果我们谈论报告的数据。

但是,我检查过你是否真的需要临时表。摆脱它们(如果它们是不必要的),您可以加快查询速度并减少tempdb用法。