每次有人查询视图时,sql server 都会计算视图吗?

lam*_*988 7 sql-server view

我想知道每次有人查询视图时,sql server 是否都会计算视图。这是因为我每次查询视图都需要很长时间。

当我试图通过仅从视图中选择前 10 行来缩短时间时,它花费了相同的时间。我怀疑 sql server 需要计算整个表的视图,即使我只想要视图中的几行,对吗?

gbn*_*gbn 6

是的,视图只是一个宏(除非已编入索引)。这种行为是众所周知的。

请参阅托尼·罗杰森 (Tony Rogerson) 的文章。您也可以在查询计划中自行查看。查询计划中不存在视图,因为它不能作为宏存在

还要注意在视图上进行过滤或 TOP 时的“谓词推送”现象