我已经创建了 8 个不同的视图,并且我在一个视图中使用了所有这些视图。所以我想知道在我继续这个想法之前。我想知道它是否会严重影响性能。
5 回答
不,还好。在许多情况下,我个人认为编写一个具有巨大且难以理解的定义的视图更可取。我认为,使用多个视图可以:
- 将离散逻辑封装在各个视图中。
- 在各个视图中重用逻辑,而不必重复逻辑(稍后消除更新问题)。
- 命名您的逻辑,以便下一个程序员更容易理解您要完成的工作。
在创建执行计划期间,视图会被“编译”掉。因此,使用它们只有很小的代价:SQL Server 查找定义所花费的额外时间。通常这种延迟是不可测量的。
这意味着将视图用于 Larry Lustig 提到的目的是非常好的和值得鼓励的。
但是:确保不要使用此技术引入不必要的 JOIN。虽然 SQL Server 具有从查询中消除不需要的表的机制,但如果查询变得复杂,它会很快放弃。执行这些额外的 JOIN 可能会导致显着减速。这就是许多公司制定禁止查看规则的原因。
所以:使用视图,但确保不要滥用它们。
It's not bad for performance just for being a view. It may add some complexity to maintain, and cause additional consideration when you want to change the schema of the underlying tables. If you were using views and they joined to the same tables, I think that would be less efficient than joining to the table once in one view.
我喜欢使用嵌套视图,每个视图都封装和命名一些数据的横截面。
至于性能,如果替代方案需要多次查询相同的数据,它实际上可以提高性能:嵌套视图有点像临时表 - 触发一次。
发现性能影响的最佳和推荐方法是尝试这两个选项并检查解释输出。
从视图中查询视图的纯粹事实不会对性能产生任何负面影响。它与从视图中查询表没有什么不同。