最近,我试图优化这个查询SQL SERVER 2008联接提示
UPDATE Analytics
SET UserID = x.UserID
FROM Analytics z
INNER JOIN UserDetail x ON x.UserGUID = z.UserGUID
估计的执行计划显示在一个哈希匹配(聚合)上表更新57%和40%。我做了一些窥探,并找到了JOIN提示的主题。所以我给我的内部连接和WA-ZHAM添加了LOOP提示!新的执行计划在Table Update上显示38%,在Index Search上显示58%。
所以我打算将LOOP提示应用到我的所有查询中,直到审慎情况变得更好。经过一些Google搜索之后,我意识到JOIN提示在BOL中并没有很好涵盖。因此...
- 有人可以告诉我为什么对所有查询应用LOOP提示是一个坏主意。我在某处读取LOOP JOIN是查询优化器的默认JOIN方法,但无法验证语句的有效性?
- 何时使用JOIN提示?当sh * t击中球迷并且鬼城不在城里时?
- LOOP,HASH和MERGE提示有什么区别? BOL指出MERGE似乎是最慢的,但每个提示的应用是什么?
感谢您的时间和帮助的人!
我正在运行SQL Server 2008 BTW。上面提到的统计数据是ESTIMATED执行计划。
在研究之前,您的索引和统计信息是否最新? – Paddy 2010-03-15 12:25:11
是的,他们是最新的 – super9 2010-03-15 12:46:36