通过查看SQL Server查询并通过基表查询得到不同的执行计划

问题描述:

我有一个基本上连接一些表的视图,并且视图上没有索引。当我查看视图(与另一个表连接)时,性能很差,大概需要10分钟。当我从视图中提取基表并加入“另一个表”时,大约需要20秒。使用视图或使用基表的逻辑完全相同。我查了一下,他们得到了不同的执行计划。任何想法为何会发生这种情况?通过查看SQL Server查询并通过基表查询得到不同的执行计划

谢谢。

SQL Server可能正在使用缓存的执行计划(基于您第一次从视图中选择了某些内容,该表可能已经增大并且不再使用最有效的计划,因此性能较低)。

你可以使用刷新视图:

sp_refreshview [ @viewname = ] 'viewname'

或完全重建的看法,并再次运行它来生成新的执行计划,不过你可能以后遇到同样的性能问题。本文介绍了可以进行更详细的情况发生:

http://www.sql-server-performance.com/2007/views-general/

http://technet.microsoft.com/en-us/library/ms187821.aspx

+0

谁投下来这个答案?我记得昨晚有2票赞成,现在只有一票。 –

+0

谢谢达伦,根据你的回答,我解决了我的问题! –

+0

@Yousui很高兴听到你有它排序:-) –