Optmiser делает достаточно хорошую работу для повседневного использования. Однако в теории может потребоваться 3 недели, чтобы найти идеальный план в экстремальных условиях, поэтому есть вероятность, что созданный план не будет идеальным.
Я бы оставил это в покое, если у вас нет очень сложного запроса или огромных объемов данных, которые просто не могут дать хороший план. Тогда я бы обдумал это.
Но со временем, когда данные изменяются / растут или изменяются индексы и т. Д., Ваша подсказка JOIN становится устаревшей и мешает оптимальному плану. Подсказка JOIN может оптимизировать только этот запрос во время разработки с тем набором данных, который у вас есть.
Лично я никогда не указывал подсказку JOIN ни в одном рабочем коде.
Обычно я решал проблему плохого объединения, меняя свой запрос, добавляя / изменяя индекс или разбивая его (например, сначала загрузив временную таблицу). Либо мой запрос был неверным, либо у меня было неявное преобразование типов данных, либо это выявило недостаток в моей схеме и т. Д.
Я видел, как другие разработчики использовали их, но только там, где у них были сложные представления, вложенные в сложные представления, и они вызывали более поздние проблемы при рефакторинге.
Edit:
У меня было преобразование сегодня, когда некоторые коллеги собираются использовать их для принудительного использования неверного плана запросов (с NOLOCK и MAXDOP 1), чтобы «поощрять» переход от устаревших сложных вложенных представлений, которые напрямую вызывает одна из их последующих систем.