是一个
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确实利用了计划缓存等。
其他回答
我无意中看到了这个帖子,只是想分享Brent Ozar的这篇文章,作为使用可用性组时的考虑。
布伦特·欧扎尔报道
我希望这两个查询的执行是相同的。视图只不过是一个存储的查询定义,视图没有缓存或存储数据。当您运行第一个查询时,优化器将有效地将其转换为第二个查询。
没有实际的区别,如果你读BOL,你会发现你的普通旧SQL SELECT * FROM X确实利用了计划缓存等。
存储执行计划应该会有一些微不足道的好处,但可以忽略不计。
这要视情况而定。索引视图比普通视图或查询快,但不能在镜像数据库环境(MS SQL)中使用索引视图。
任何类型的循环中的视图都会导致严重的减速,因为每次在循环中调用视图时都会重新填充视图。与查询相同。在这种情况下,使用#或@来保存要循环的数据的临时表比视图或查询更快。
所以这要视情况而定。