在进行性能测试时如何避免SQL Server的"重建统计"?

Van*_*nce 8 sql sql-server testing performance

这些天我正在做一些SQL调优,并在测试期间找到一个奇怪的SQL:

SELECT StatMan([SC0],[SC1], [SB0000]) 
FROM (SELECT TOP 100 PERCENT [SC0],[SC1], step_direction([SC0]) over (order by NULL) AS [SB0000]  
      FROM (SELECT [tableA] AS [SC0],[tableB] AS [SC1] 
            FROM [dbo].[url] WITH (READUNCOMMITTED,SAMPLE 3.408654e+000 PERCENT) 
           ) AS _MS_UPDSTATS_TBL_HELPER 
     ORDER BY [SC0],[SC1], [SB0000] 
    ) AS _MS_UPDSTATS_TBL  
OPTION (MAXDOP 1)
Run Code Online (Sandbox Code Playgroud)

看起来这是根据SQL Server做一些"reindex"或"重建"一些db索引.但我的问题是,除了测试之前每个表的"reindex"之外,我们如何在长负载测试期间避免这种情况.

由于我的表包含足够的行,因此该SQL将消耗16862ms.我的测试中有很多插入动作.

Enu*_*ull 6

这似乎来自更新统计数据.

更新统计信息是否会在正常生产环境中发生?如果是这样,不应该进行负载测试,以反映生产环境,更新统计数据?

要关闭AUTO_UPDATE_STATISTICS选项,请在所需的表上使用sp_autostats(请参阅http://msdn.microsoft.com/en-us/library/ms188775.aspx).