gpt4 book ai didi

sql-server-2008 - SQL SERVER 2008 JOIN 提示

转载 作者:行者123 更新时间:2023-12-01 07:48:17 25 4
gpt4 key购买 nike

最近,我试图优化这个查询

UPDATE Analytics
SET UserID = x.UserID
FROM Analytics z
INNER JOIN UserDetail x ON x.UserGUID = z.UserGUID

估计的执行计划在表更新上显示 57%,在哈希匹配(聚合)上显示 40%。我做了一些窥探,发现了 JOIN 提示的话题。所以我在我的内部连接和 WA-ZHAM 中添加了一个 LOOP 提示!新的执行计划显示 38% 的表更新和 58% 的索引查找。

所以我正准备开始对我所有的查询应用 LOOP 提示,直到谨慎让我变得更好。经过一番谷歌搜索后,我意识到 BOL 中没有很好地涵盖 JOIN 提示。 .所以...
  • 有人可以告诉我为什么将 LOOP 提示应用于我的所有查询是一个坏主意。我在某处读到 LOOP JOIN 是查询优化器的默认 JOIN 方法,但无法验证语句的有效性?
  • 什么时候使用 JOIN 提示?当 sh * t 击中风扇和幽灵破坏者不在城里时?
  • LOOP、HASH 和 MERGE 提示之间有什么区别? BOL 表示 MERGE 似乎是最慢的,但是每个提示的应用是什么?

  • 感谢您的时间和帮助人们!

    我正在运行 SQL Server 2008 BTW。上面提到的统计数据是 ESTIMATED 执行计划。

    最佳答案

    Can someone please tell me why applying LOOP hints to all my queries is a bad idea. I read somewhere that a LOOP JOIN is default JOIN method for query optimiser but couldn't verify the validity of the statement?



    因为这剥夺了优化器考虑其他更有效方法的机会。

    When are JOIN hints used? When the sh*t hits the fan and ghost busters ain't in town?



    当数据分布(优化器在其上做出决定)严重倾斜并且统计数据无法正确表示时。

    What's the difference between LOOP, HASH and MERGE hints? BOL states that MERGE seems to be the slowest but what is the application of each hint?



    这些是不同的算法。
  • LOOP是嵌套循环:对于外部表中的每条记录,都会在内部表中搜索匹配项(使用可用索引)。当两个表中只有一小部分记录满足 JOIN 时最快和 WHERE状况。
  • MERGE sorts 两个表都按排序顺序遍历它们,跳过不匹配的记录。最快的FULL JOIN s 并且当两个记录集都已经排序(来自先前的排序操作或使用索引访问路径时)
  • HASH从其中一个表在临时存储(内存或 tempdb )中构建一个哈希表,并从另一个表中搜索每条记录。如果任一表中的大部分记录与 WHERE 匹配,则速度最快和 JOIN健康)状况。
  • 关于sql-server-2008 - SQL SERVER 2008 JOIN 提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2446927/

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