我希望了解在SQL Server存储过程中使用视图与临时表的性能优劣。
我知道这两者之间的区别(例如,临时表可能会提供过期数据等),但我找不到任何关于性能方面的信息。
我希望了解在SQL Server存储过程中使用视图与临时表的性能优劣。
我知道这两者之间的区别(例如,临时表可能会提供过期数据等),但我找不到任何关于性能方面的信息。
Views
(视图)在没有企业版
的情况下不会提高性能,而且你的视图必须遵循索引视图
的规则。调用其他视图的视图可能会导致严重的性能问题。 临时表
(Temp tables)可能会有过期数据,但对于在存储过程中有多个操作的事务来说,这通常是一个好事,因为所有操作都针对同一组数据进行。这样可以减少数据完整性问题。 表变量
(Table variables)通常在较小的数据集中比临时表
(Temp tables)更快,但对于较大的数据集,临时表
(Temp tables)往往表现更好,特别是因为它们可以被索引。与所有性能调整一样,根据您的特定硬件和数据库设计的不同,存在差异,因此如果您关心性能(正如您应该),则需要测试各种选项以找到最适合您特定实例的选项。
noexpand
提示,以便在其他版本中使用索引视图。我在SO上看到一个问题,表明从SQL Server 2008 R2开始不再适用,但我自己不确定。 - Martin Smith