gpt4 book ai didi

sql-server - 定义 View 时如何让 T-SQL 执行 OPTION (FORCE ORDER)?

转载 作者:行者123 更新时间:2023-12-02 20:49:36 29 4
gpt4 key购买 nike

我的 DBA 告诉我,在访问一组特定的 View 时,我应该始终在我的 SQL 语句中使用 OPTION (FORCE ORDER)。我知道这是为了防止服务器否决他的加入顺序。

很公平 - 让 DBA 开心是值得的,我很乐意遵守。

但是,我想在我自己的模式中写几个 View ,但这显然不受支持。

那么,我如何在编写我的 View 时实现相同的效果,即强制执行 OPTION (FORCE ORDER)

谢谢弗雷德

最佳答案

盲目地将 OPTION (FORCE ORDER) 附加到所有引用特定 View 的查询是非常糟糕的一揽子建议。

OPTION (FORCE ORDER) 是一个查询提示,它们在 View 内无效 - 您需要将它放在所有引用您自己的 View 的查询的外层。

使用 Join hints 有效的内部 View 虽然和

If a join hint is specified for any two tables, the query optimizer automatically enforces the join order for all joined tables in the query, based on the position of the ON keywords.

所以

SELECT v1.Foo,
v2.Bar
FROM v1
INNER HASH JOIN v2
ON v1.x = v2.x;

将在 v1 和 v2 中强制执行连接顺序(以及在它们之间强制执行连接顺序和算法)。

但我不推荐这样做。这些类型的提示只能在无法以任何其他方式获得令人满意的计划后的最后手段中以极具针对性的方式使用。甚至没有测试替代品就不是政策问题。

关于sql-server - 定义 View 时如何让 T-SQL 执行 OPTION (FORCE ORDER)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42751859/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com