最近,我试图优化这个查询
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 提示,直到我变得更加谨慎。经过一番谷歌搜索,我意识到 JOIN 提示并没有很好地涵盖在BOL中。所以...
- 有人可以告诉我为什么将 LOOP 提示应用于我的所有查询是一个坏主意。我在某处读到 LOOP JOIN 是查询优化器的默认 JOIN 方法,但无法验证语句的有效性?
- 何时使用 JOIN 提示?当狗屎打到粉丝和幽灵克星不在城里?
- LOOP、HASH 和 MERGE 提示有什么区别?BOL 指出 MERGE 似乎是最慢的,但是每个提示的应用是什么?
感谢您的时间和帮助人们!
我正在运行 SQL Server 2008 顺便说一句。上面提到的统计数据是估计的执行计划。