2015-03-25 6 views
1

Я хочу знать различия между подсказками соединения (MERGE, HASH, LOOP, REMOTE). Итак, в каких ситуациях мне нужно было бы и почему? Как узнать, какой намек я должен использовать?Transact-SQL: Join-Hints - отличия, производительность, ограничения

Есть ли у пользователя pro или contra's подсказки?

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

Есть ли какие-либо ограничения при использовании этих подсказок?

ответ

1

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

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