是一个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中,具有唯一聚簇索引的视图称为索引视图。
HUX布斯
TA贡献1876条经验 获得超6个赞
至少在SQL Server中,查询计划基于查询/视图参数存储在计划缓存中,用于视图和普通SQL查询。对于两者而言,当它们在未使用足够长的时间段时从缓存中删除,并且对于其他一些新提交的查询需要空间。之后,如果发出相同的查询,则重新编译它,并将计划放回缓存中。所以不,没有区别,因为您正在重复使用相同的SQL查询和具有相同频率的相同视图。
显然,一般来说,一个视图,就其本质而言(有人认为它经常被足够使用以使其成为一个视图)通常比任何任意SQL语句更有可能被“重用”。
添加回答
举报
0/150
提交
取消