Transact-SQL: советы по присоединению - различия, производительность, ограничения
Я хочу знать различия между подсказками соединения (MERGE, HASH, LOOP, REMOTE). Итак, в каких ситуациях я должен, какой и почему? Как узнать, какой совет мне следует использовать?
Есть ли плюсы или минусы использования подсказок?
Если я использую правильную подсказку, будет ли производительность моего запроса лучше? Есть ли плохие вещи?
И есть ли какие-то ограничения, когда я использую эти подсказки?
1 ответ
Наиболее широко используемый намек - это nolock, на который многие недовольные пользователи не одобряют. SQL Server не рекомендует использовать подсказки. Механизм SQL Server очень, очень мощный и сложный, и, как правило, сам создает "лучший" план запросов и часто игнорирует большинство подсказок. Если индекс не используется, он либо недостаточно избирателен (поэтому он не платит за использование SQL Server), либо его статистика устарела. Очень, очень редко в SQL Server 2008 и далее вам нужны подсказки - вам может понадобиться больше / лучше индексов или лучше SQL.
Подсказки могут понадобиться только в том случае, если вы пытаетесь исправить свои индексы, а SQL Server не использует их или не объединяет, используя правильный тип объединения, как указано в фактическом плане запросов. Но такие ситуации очень редки.