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