Sql server 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
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也不会执行任何操作