Недавно я пытался оптимизировать этот запрос
UPDATE Analytics
SET UserID = x.UserID
FROM Analytics z
INNER JOIN UserDetail x ON x.UserGUID = z.UserGUID
Предполагаемый план выполнения показывает 57% в обновлении таблицы и 40% в хэш-совпадении (агрегат). Я немного покопался и наткнулся на тему подсказок JOIN. Поэтому я добавил подсказку LOOP к своему внутреннему соединению и WA-ZHAM! Новый план выполнения показывает 38% в обновлении таблицы и 58% в поиске индекса.
Так что я собирался начать применять подсказки LOOP ко всем моим запросам, пока благоразумие не одолело меня. После некоторого поиска в Google я понял, что подсказки JOIN не очень хорошо отражены в BOL . Поэтому ...
- Может кто-нибудь сказать мне, почему применение подсказок LOOP ко всем моим запросам - плохая идея. Я где-то читал, что LOOP JOIN является методом JOIN по умолчанию для оптимизатора запросов, но не может проверить правильность утверждения?
- Когда используются подсказки JOIN? Когда дерьмо поразит поклонника, а убийц призраков не будет в городе?
- В чем разница между подсказками LOOP, HASH и MERGE? BOL утверждает, что MERGE кажется самым медленным, но какое применение имеет каждая подсказка?
Спасибо за ваше время и помощь людям!
Я использую SQL Server 2008 BTW. Указанные выше статистические данные являются ОЦЕНЕННЫМИ планами выполнения.