我在 Sql Server 2008 中有一个视图,当只执行一个:
SELECT * FROM [Table]
Run Code Online (Sandbox Code Playgroud)
将返回大约 40000 行乘 130 列。以下是 6 次运行时的客户端统计信息(平均大约 7 秒):

让我们假设这些时间都很好,当应用过滤器时问题就出现了。以下是 6 次运行时的客户端统计信息(平均大约 6 秒):

有一些事情令人讨厌/令人沮丧:
过滤后的 SQL 看起来像:
SELECT * FROM [Table] Where [IntColumn] = 15 -- returns 16 rows
Run Code Online (Sandbox Code Playgroud)我来找你们是因为我不知道为什么过滤后的版本可能需要这么长时间。SQL 引擎从执行开始就找到这 16 行,然后计算/查找 130 列的值应该非常简单。我的问题真的是:
以下是匿名执行计划(.zip 中的 .sqlplan):