为了账号安全,请及时绑定邮箱和手机立即绑定

视图是否比简单查询更快?

视图是否比简单查询更快?

撒科打诨 2019-08-06 13:04:34
是一个select *  from myView比查询本身更快地创建视图(为了拥有相同的resultSet):select * from ([query to create same resultSet as myView])?对于我来说,如果视图使用某种缓存使其比简单查询更快,那么我并不完全清楚。视图是否比简单查询更快?
查看完整描述

3 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

一般来说,没有。视图主要用于方便和安全,而不是用于提高速度。

也就是说,SQL Server 2000及更高版本确实有一个称为索引视图的特殊功能,可以极大地提高性能,但您必须按照一组非常具体的指南创建索引视图。

在线书籍中有关于视图分辨率的重要参考。

多年来,Microsoft®SQLServer™支持创建称为视图的虚拟表的功能。从历史上看,这些观点主要用于以下目的:

  • 提供一种安全机制,将用户限制在一个或多个基表中的某个数据子集。

  • 提供一种机制,允许开发人员自定义用户如何逻辑查看存储在基表中的数据。

使用SQL Server 2000,SQL Server视图的功能得到了扩展,从而提供了系统性能优势。可以在视图上创建唯一的聚簇索引以及非聚簇索引,以提高最复杂查询的数据访问性能。在SQL Server 2000和2005中,具有唯一聚簇索引的视图称为索引视图。


查看完整回答
反对 回复 2019-08-06
?
HUX布斯

TA贡献1876条经验 获得超6个赞

至少在SQL Server中,查询计划基于查询/视图参数存储在计划缓存中,用于视图和普通SQL查询。对于两者而言,当它们在未使用足够长的时间段时从缓存中删除,并且对于其他一些新提交的查询需要空间。之后,如果发出相同的查询,则重新编译它,并将计划放回缓存中。所以不,没有区别,因为您正在重复使用相同的SQL查询和具有相同频率的相同视图。

显然,一般来说,一个视图,就其本质而言(有人认为它经常被足够使用以使其成为一个视图)通常比任何任意SQL语句更有可能被“重用”。


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 1792 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信