Fre*_*sen 2 t-sql sql-server query-optimization
我的 DBA 告诉我,OPTION (FORCE ORDER)当访问一组特定的视图时,我应该始终在我的 SQL 语句中使用。我明白这是为了防止服务器否决他的加入顺序。
很公平 - 让 DBA 开心是值得的,我很乐意遵守。
但是,我想在我自己的架构中编写几个视图,但这显然不受支持。
那么,我如何在编写我的观点时实现同样的目标,OPTION (FORCE ORDER)即被强制执行?
谢谢弗雷德
盲目地附加OPTION (FORCE ORDER)到引用特定视图的所有查询是非常糟糕的一揽子建议。
OPTION (FORCE ORDER) 是一个查询提示,这些在视图内无效 - 您需要将它放在引用您自己的视图的所有查询的外部级别。
它是有效使用联接提示里面的观点,但并
如果为任意两个表指定了连接提示,则查询优化器会根据 ON 关键字的位置自动为查询中的所有连接表强制执行连接顺序。
所以
SELECT v1.Foo,
v2.Bar
FROM v1
INNER HASH JOIN v2
ON v1.x = v2.x;
Run Code Online (Sandbox Code Playgroud)
将强制执行 v1 和 v2 内的连接顺序(以及强制执行它们之间的连接顺序和算法)。
但我不会推荐这个。这些类型的提示只能在无法以任何其他方式获得令人满意的计划后,以极其有针对性的方式使用。甚至在没有测试替代方案的情况下,这都不是政策问题。
| 归档时间: |
|
| 查看次数: |
3590 次 |
| 最近记录: |