小编jab*_*abs的帖子

如何确保 SQL Server 查询优化器使用查询中的确切表

我有一个在 SQL Server 2008 中运行的查询:

select count(*)
from table1 join
table2 on table1.col1 = table2.col2
Run Code Online (Sandbox Code Playgroud)

在运行此脚本的数据仓库中,一个名为的表thin_table1专门填充table1(我们使用此薄表创建索引视图。阅读此答案了解更多详细信息)。

问题是优化器选择使用thin_table1而不是table1在执行期间。这在 SQL Server 2005 中不会发生。这个新的执行计划不适用于我们当前的操作。

如何在数据库或会话级(或在 SSIS 中)关闭此“传递”功能?我在数据加载期间运行了许多 SSIS 包和存储过程,所以我不想单独接触所有对象。

此时,即使知道该功能称为什么也有助于寻找答案。

编辑:
在 2005 年回过头来看看同样的计划。看起来它确实发生在那里,但它的戏剧性效果要小得多。我认为这是 2008 年的问题,但 2005 年出现了相同的功能。

EDIT2:
这里的 DBA 注意到该计划正在引用索引视图。我们通常在运行时删除索引视图,但在这个测试场景中,它们仍然被构建。看起来当索引视图处于活动状态时,它将在查询执行时使用该视图以及与其关联的任何表。

有没有办法绕过这种对索引视图的自动引用?

sql-server-2008 sql-server ssis

4
推荐指数
1
解决办法
1214
查看次数

标签 统计

sql-server ×1

sql-server-2008 ×1

ssis ×1