在sql中调用View中的视图是不好的

时间:2012-10-10 19:13:26

标签: sql sql-server

我创建了8个不同的视图,我在视图中使用了所有这些视图。 所以在我进一步研究这个想法之前,我很想知道。我想知道它对性能的影响是否太大。

5 个答案:

答案 0 :(得分:18)

不,没关系。在许多情况下,我个人认为写一个具有巨大且难以理解的定义的视图更为可取。在我看来,使用多个视图可以:

  1. 在各个视图中封装离散逻辑。
  2. 在不必重复逻辑的情况下重复使用各个视图中的逻辑(稍后消除更新问题)。
  3. 为您的逻辑命名,以便下一个程序员更容易理解您要完成的任务。

答案 1 :(得分:6)

在创建执行计划期间,视图会被“编译”掉。因此,使用它们只会受到很小的惩罚:SQL Server查找定义需要额外的时间。通常这种延迟是不可测量的。

这意味着为拉里·劳斯蒂提到的目的使用视图是非常好的和鼓励的。

但是:请确保您不使用此技术引入不必要的JOIN。虽然SQL Server具有从查询中消除不需要的表的机制,但如果查询变得复杂,它会很快放弃。执行这些额外的JOIN可能会导致显着的减速。这就是许多公司制定了无视图规则的原因。

所以:使用视图,但请确保不要滥用它们。

答案 2 :(得分:3)

仅仅作为一种观点,表现并不坏。它可能会增加一些维护的复杂性,并在您想要更改基础表的架构时引起额外的考虑。如果您正在使用视图并且他们加入了相同的表,我认为这比在一个视图中加入表一样效率低。

答案 3 :(得分:2)

我赞成使用嵌套视图,每个视图都封装并命名一些数据的横截面。

至于性能,如果备选方案需要多次查询相同的数据,它实际上可以提高性能:嵌套视图有点像临时表 - 触发一次。

发现性能影响的最佳和推荐方法是尝试这两个选项并检查解释输出。

答案 4 :(得分:1)

从视图中查询视图的纯粹事实不会产生任何负面的性能影响。它与在视图中查询表没有什么不同。