小编典典

通过视图查询是否比直接执行SQL慢?

sql

设想:

我有3个表需要连接在一起,where子句用于限制结果集,并且从每个表中只选择了几列。简单的。但是,执行此操作的查询不是很漂亮,并且在数据库和应用程序之间使用ORM时,就像试图将方形钉放入圆孔中一样。

解决这个问题的方法是创建一个包含查询的视图,现在我的应用程序模型直接映射到数据库中的一个视图。不再疯狂地映射ORM层。

问题:假设这里没有其他因素起作用, 如果直接执行SQL语句针对视图的查询是否会产生我不会受到的其他性能损失?
-这不是索引视图,假定具有相同的where子句,请保持简单。

导致我相信一种观点会遭受“正在构建”的额外开销。我的理解是,在其他所有条件相同的情况下,两者应具有相同的性能。

请说清楚。谢谢!


阅读 222

收藏
2021-04-07

共1个答案

小编典典

从MSDN: 查看分辨率

当SQL语句引用非索引视图时,解析器和查询优化器将分析SQL语句和视图的源,然后将它们解析为一个执行计划。对于SQL语句,没有一个计划,而对于视图,没有一个单独的计划。

不应有任何不同的表现。视图可帮助您进行组织,而不是任何性能增强。除非您使用索引视图。

仅存储未索引视图的定义,而不存储视图的行。查询优化器将视图定义中的逻辑并入为其针对引用非索引视图的SQL语句构建的执行计划中。

2021-04-07