В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Исправление: Низкая производительность при использовании табличных переменных в SQL Server 2012 или SQL Server 2014 г

ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.

Эта статья на английском языке: 2952444
Проблема
После заполнения переменной таблицы с несколькими строками и объединить ее с другими таблицами, оптимизатор запросов может выбрать неэффективного плана запроса, что может привести к замедлить производительность запросов.
Решение
После установки данного исправления можно включить флаг трассировки 2453 разрешить переменную-таблицу для запуска перекомпиляция при изменении достаточное количество строк. Это может позволить оптимизатору запросов выбирать более эффективный план.

Проблема была впервые устранена в следующее накопительное обновление или / и пакеты обновления для SQL Server.

Накопительного обновления 3 для SQL Server 2014 г

О накопительных пакетах обновления для SQL Server

Каждый новый накопительный пакет обновления для SQL Server содержит все исправления и все безопасности исправления, входившие в состав предыдущего накопительного обновления. Извлечь последние накопительные обновления для SQL Server:

Пакет обновления 2 для SQL Server 2012

О пакетах обновления для SQL Server

Пакеты обновления являются накопительными. Каждый новый пакет содержит все исправления, включенные в пакеты предыдущих версий, а также новые исправления. Наши рекомендации — применить последний пакет обновления и последнее накопительное обновление для этого пакета обновления. Устанавливать предыдущий пакет обновления, прежде чем устанавливать последний пакет обновления, не нужно. Для получения дополнительных сведений о последнем пакете обновления и последнее накопительное обновление с помощью таблицы 1 в следующей статье:

Дополнительная информация
При использовании табличной переменной в пакете или процедуре запроса скомпилирована и оптимизирована для начального состояния пустой переменной таблицы. Если эта переменная таблица заполняется много строк во время выполнения, предварительно скомпилированный план запроса может быть оптимальным. Например запрос может быть присоединение табличной переменной с вложенными циклами так, как это обычно более эффективно небольшое количество строк. Этот план запроса может оказаться неэффективным, если переменная таблицы имеет миллионы строк. Хэш-соединения может быть лучшим выбором при таких условиях. Чтобы получить новый план запроса, оно должно быть перекомпилировано. В отличие от других пользователей или временные таблицы тем не менее, число изменений строк в переменную-таблицу не вызывает повторную компиляцию запроса. Как правило можно обойти это с OPTION (RECOMPILE), который имеет свой собственный накладные расходы.
Флаг трассировки 2453 позволяет преимущества повторную компиляцию запроса без OPTION (RECOMPILE). Этот флаг трассировки отличается от OPTION (RECOMPILE) в два основных аспекта.
(1) используется же Пороговое количество строк в других таблицах. Запрос необходимо скомпилировать для каждого исполнения в отличие от OPTION (RECOMPILE). Он вызовет повторную компиляцию только в том случае, когда число изменений строк превышает заранее установленного порогового значения.
(2) OPTION (RECOMPILE) вызывает запрос для считывания параметров и оптимизации запроса. Этот флаг трассировки не вынуждает Просмотр параметров.

Примечание этот флаг трассировки, необходимо Включить во время выполнения. Этот флаг трассировки нельзя использовать с QUERYTRACEON. Этот флаг трассировки необходимо использовать с осторожностью, так как он может увеличить число повторных компиляций запросов, которые может стоить больше экономии от повышения оптимизации запроса.
Статус
Корпорация Майкрософт подтверждает, что это проблема продуктов Майкрософт, перечисленных в разделе "Относится к".

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 2952444 — последний просмотр: 02/22/2016 07:07:00 — редакция: 3.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2952444 KbMtru
Отзывы и предложения