gpt4 book ai didi

sql - JOIN 中表的顺序

转载 作者:行者123 更新时间:2023-12-04 02:47:40 24 4
gpt4 key购买 nike

sql server 中表的连接是按什么顺序访问表的?

我们可以强制执行一些指定的顺序吗?

最佳答案

是的,使用FORCE ORDER query hint例如:

SELECT  *
FROM C
INNER JOIN B
ON B.BID = C.BID
INNER JOIN A
ON A.AID = B.AID
OPTION (FORCE ORDER);

这确保查询语法指示的连接顺序在查询优化期间得以保留。在下面的两个执行计划中,顶部计划没有查询提示,而底部计划有查询提示:

enter image description here

您可以看到,在第一个优化器应用它认为最好的顺序(A 然后 B 然后 C),而在第二个中保持原始顺序(C 然后 B 然后 A)。作为一般规则,我会说,除非你足够了解优化器,知道为什么优化器选择某个计划,为什么另一个计划会更有效率,以及为什么优化器没有选择这个更好的计划,那么我会远离通过使用提示强制执行计划,优化器通常最清楚,而在它不知道的地方,更可能是陈旧的统计信息或碎片化的索引等,而不是应该通过强制执行计划来修复的东西。

上面的架构和查询在 SQL Fiddle 上.

关于sql - JOIN 中表的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18570916/

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