Transact-SQL: советы по присоединению - различия, производительность, ограничения

Я хочу знать различия между подсказками соединения (MERGE, HASH, LOOP, REMOTE). Итак, в каких ситуациях я должен, какой и почему? Как узнать, какой совет мне следует использовать?

Есть ли плюсы или минусы использования подсказок?

Если я использую правильную подсказку, будет ли производительность моего запроса лучше? Есть ли плохие вещи?

И есть ли какие-то ограничения, когда я использую эти подсказки?

1 ответ

Наиболее широко используемый намек - это nolock, на который многие недовольные пользователи не одобряют. SQL Server не рекомендует использовать подсказки. Механизм SQL Server очень, очень мощный и сложный, и, как правило, сам создает "лучший" план запросов и часто игнорирует большинство подсказок. Если индекс не используется, он либо недостаточно избирателен (поэтому он не платит за использование SQL Server), либо его статистика устарела. Очень, очень редко в SQL Server 2008 и далее вам нужны подсказки - вам может понадобиться больше / лучше индексов или лучше SQL.

Подсказки могут понадобиться только в том случае, если вы пытаетесь исправить свои индексы, а SQL Server не использует их или не объединяет, используя правильный тип объединения, как указано в фактическом плане запросов. Но такие ситуации очень редки.

Другие вопросы по тегам