我正在编写一份报告,结果是多个#temp表的组合。结构如下
存储过程1,其临时表提供0.5万行
存储过程2,其临时表为10万行
最后我需要结合上述2 SP的结果集,再次使用临时表并为报告创建一个最终结果集。现在我担心性能,后来如果数据增加,它会影响临时数据库。我们通常每月分阶段处理数据,数据库可能在一个月内包含大约100万行。临时数据库容纳的最大容量是多少。用上述方法会影响它吗?
答案 0 :(得分:1)
首先,它不是关于行的大小的行数。因此,如果你每行有7KB,那么对于.6百万行,它大约是4 GB左右。现在,这不是结束,SQL Server使用TempDb来存储内部对象,版本对象和用户对象,这些对象也包含中间结果。在您的情况下,您可以预期大小增长超过4 GB。 有两种方法可以解决这个问题:
在现实世界中,查询本身总是有机会改进。通过正确连接表或使用视图来检查是否可以避免使用tempdb。
答案 1 :(得分:0)
tempdb
的大小仅受存储它的磁盘大小的限制。 (或can be limited在数据库的属性中。)
至于100万行。如今它并不多,甚至还有一点点#34;特别是,如果我们谈论报告的数据。
但是,我检查过你是否真的需要临时表。摆脱它们(如果它们是不必要的),您可以加快查询速度并减少tempdb
用法。