是一个
select * from myView
比查询本身更快地创建视图(为了拥有相同的resultSet):
select * from ([query to create same resultSet as myView])
?
我不完全清楚视图是否使用了某种缓存,使其比简单查询更快。
是一个
select * from myView
比查询本身更快地创建视图(为了拥有相同的resultSet):
select * from ([query to create same resultSet as myView])
?
我不完全清楚视图是否使用了某种缓存,使其比简单查询更快。
当前回答
没有实际的区别,如果你读BOL,你会发现你的普通旧SQL SELECT * FROM X确实利用了计划缓存等。
其他回答
存储执行计划应该会有一些微不足道的好处,但可以忽略不计。
不。View只是实际的长SQL查询的一种简短形式。但是,你可以说实际查询比视图命令/查询更快。
首先视图查询将转换为简单查询,然后执行,因此视图查询将比简单查询执行更多的时间。
当您使用连接b/w多个表时,可以使用sql视图,以简单的方式一次又一次地重用复杂的查询。
在我的发现中,使用视图比普通查询要快一些。我的存储过程大约花了25分钟(使用不同的更大的记录集和多个连接),在使用视图(非集群)后,性能稍微快了一点,但并不显著。我不得不使用一些其他的查询优化技术/方法来做出巨大的改变。
我的理解是,在过去,视图会更快,因为SQL Server可以存储执行计划,然后直接使用它,而不是试图在飞行中找出一个。我认为现在的性能增益可能没有以前那么大,但我不得不猜测使用视图会有一些边际改进。
我无意中看到了这个帖子,只是想分享Brent Ozar的这篇文章,作为使用可用性组时的考虑。
布伦特·欧扎尔报道