SQL Server Views性能

时间:2011-01-05 11:37:13

标签: sql-server performance views

如果我在SQL Server中定义了这样的视图:

CREATE View V1 
AS
SELECT *    
FROM t1
INNER JOIN t2 ON t1.f1 = t2.f2    
ORDER BY t1.f1

我是否应该期待

之间的性能差异
SELECT * FROM V1 WHERE V1.f1 = 100

只是避免查看,就像这样

SELECT *    
FROM t1
INNER JOIN t2 ON t1.f1 = t2.f2    
WHERE t1.f1 = 100
ORDER BY t1.f1

除了需要集中复杂查询外,我们没有任何理由使用视图。

由于

2 个答案:

答案 0 :(得分:5)

不应该有性能损失。

简化复杂查询是视图的用途。

如果性能是您所关注的 - 请阅读SQL Server中的indexed views

  

索引视图提供了使用标准索引无法实现的额外性能优势。索引视图可以通过以下方式提高查询性能:

     
      
  • 聚合可以预先计算并存储在索引中,以最大限度地减少查询执行期间的昂贵计算。
  •   
  • 可以预先连接表格并存储结果数据集。
  •   
  • 可以存储联接或聚合的组合。
  •   

答案 1 :(得分:0)

通常,您不应该期望性能差异,而是检查查询的执行计划。

如果要将Views加入Views,那么执行计划可能是次优的,并且包含对可能已合并的同一个表的重复访问。此外,观点和predicate pushing也可能存在问题。