Sql server SQL Server查看性能

Sql server SQL Server查看性能,sql-server,performance,views,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 = 10

如果我在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
?

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


谢谢

不应该有性能惩罚

简化复杂查询是视图的目的

如果性能是您关心的问题-请阅读SQL Server中的:

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

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

不应该有任何表现惩罚

简化复杂查询是视图的目的

如果性能是您关心的问题-请阅读SQL Server中的:

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

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

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


如果要将视图连接到视图,则执行计划可能是次优的,并且包含对可能已合并的同一表的重复访问。此外,视图和属性也可能存在问题。

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


如果要将视图连接到视图,则执行计划可能是次优的,并且包含对可能已合并的同一表的重复访问。此外,视图可能存在问题,并且视图中的。

排序不起作用。存在一些混乱(在使用where子句(其中t1.f1=100)之后,使用order by t1.f1毫无意义。即使结果集包含多行,该order by在视图中也不起作用。存在一些混乱(在使用where子句(其中t1.f1=100)之后,使用order by t1.f1没有任何意义。即使结果集包含多行,该order by也不会执行任何操作