我正在编写一份报告,结果是多个#temp 表的组合。结构如下
存储过程 1,它有一个提供 50 万行的临时表
存储过程 2,它有一个提供 10 万行的临时表
最后,我需要合并上面 2 SP 的结果集,再次使用临时表并制作一个最终结果集以供报告。现在我担心性能,以后如果数据增加,它会影响临时数据库。我们通常每月暂存数据,一个月内它的数据库可能包含大约 100 万行。temp db 可容纳的最大容量是多少。上面的方法会不会有效果。
我正在编写一份报告,结果是多个#temp 表的组合。结构如下
存储过程 1,它有一个提供 50 万行的临时表
存储过程 2,它有一个提供 10 万行的临时表
最后,我需要合并上面 2 SP 的结果集,再次使用临时表并制作一个最终结果集以供报告。现在我担心性能,以后如果数据增加,它会影响临时数据库。我们通常每月暂存数据,一个月内它的数据库可能包含大约 100 万行。temp db 可容纳的最大容量是多少。上面的方法会不会有效果。
首先,它与行数无关,而与行的大小有关。因此,如果每行有 7KB,那么对于 60 万行,它大约是 4 GB。现在,这还没有结束,SQL Server 使用 TempDb 来存储内部对象、版本对象和用户对象,其中还包括中间结果。在您的情况下,您可以预期大小会增长超过 4 GB。有两种可能的方法来克服这个问题:
在现实世界的场景中,查询本身总是有改进的机会。检查是否可以通过正确连接表或使用视图来避免使用 tempdb。
的大小tempdb
仅受存储它的磁盘大小的限制。(或者可以限制在数据库的属性中。)
至于一百万行。如今,它并不多,甚至“一点”。特别是,如果我们谈论报告的数据。
但是,我检查了你是否真的需要那个临时表。摆脱它们(如果它们是不必要的),您可以加快查询速度并减少tempdb
使用量。