我创建了8个不同的视图,我在视图中使用了所有这些视图。 所以在我进一步研究这个想法之前,我很想知道。我想知道它对性能的影响是否太大。
答案 0 :(得分:18)
不,没关系。在许多情况下,我个人认为写一个具有巨大且难以理解的定义的视图更为可取。在我看来,使用多个视图可以:
答案 1 :(得分:6)
在创建执行计划期间,视图会被“编译”掉。因此,使用它们只会受到很小的惩罚:SQL Server查找定义需要额外的时间。通常这种延迟是不可测量的。
这意味着为拉里·劳斯蒂提到的目的使用视图是非常好的和鼓励的。
但是:请确保您不使用此技术引入不必要的JOIN。虽然SQL Server具有从查询中消除不需要的表的机制,但如果查询变得复杂,它会很快放弃。执行这些额外的JOIN可能会导致显着的减速。这就是许多公司制定了无视图规则的原因。
所以:使用视图,但请确保不要滥用它们。
答案 2 :(得分:3)
仅仅作为一种观点,表现并不坏。它可能会增加一些维护的复杂性,并在您想要更改基础表的架构时引起额外的考虑。如果您正在使用视图并且他们加入了相同的表,我认为这比在一个视图中加入表一样效率低。
答案 3 :(得分:2)
我赞成使用嵌套视图,每个视图都封装并命名一些数据的横截面。
至于性能,如果备选方案需要多次查询相同的数据,它实际上可以提高性能:嵌套视图有点像临时表 - 触发一次。
发现性能影响的最佳和推荐方法是尝试这两个选项并检查解释输出。
答案 4 :(得分:1)
从视图中查询视图的纯粹事实不会产生任何负面的性能影响。它与在视图中查询表没有什么不同。