最近,我们对一些可能对性能产生负面影响的 SQL Server 视图进行了一些更改。我们决定对这些视图进行一些性能测试,看看我们是如何影响它们的。结果令人惊讶。
下图显示了我们运行的性能测试的结果。以下是图表所代表的内容:
- 蓝线是进行任何更改之前的视图。
- 红线显示更改后的视图。
- x 轴表示循环中的迭代。
- 每次迭代,都会插入一千条新记录(视图将返回)。
- 每次迭代,我们都会从我们正在测试的视图中进行几次选择,并对结果进行平均。
- y 轴表示视图返回结果所需的时间
- 经过性能测试的 select 语句有一个 where 子句,每次只返回 100 条记录。(在测试期间,每个名字上插入了 100 条记录)。
结果表明,我们确实确实受到了性能影响,但令我们感到困惑的是,一旦我们在数据库中达到大约 40,000 条记录,性能就会大幅提升。我们在几个不同的服务器上运行了这个测试,每次都得到类似的结果。
我想知道是否有人可以深入了解为什么会发生这种情况。当我们突破 40,000 个记录水平时,为什么我们会获得巨大的性能提升?有没有人见过这样的事情?我试图为此寻找某种原因,但空手而归。
我们尝试过调整视图、弄乱索引、重建和重组索引、分析执行计划以及其他各种事情,但到目前为止,我们还没有发现任何会导致这种情况的事情。
任何帮助或见解将不胜感激。谢谢。