Исправление: MERGE UNION не используется с большим количеством предложения UNION

Переводы статьи Переводы статьи
Код статьи: 295037 - Vizualiza?i produsele pentru care se aplic? acest articol.
ОШИБКА #: 351918 (SHILOH_BUGS)
Развернуть все | Свернуть все

В этой статье

Проблема

Запросы, которые используют более чем 20 UNION ALL предложение ветви, выполняются с помощью объединения HASH, вместо того, чтобы более эффективно MERGE UNION, которые в результате использования памяти и может привести к сбою запроса. Следствием этого в том, что распределенное секционированное представление на 24 узлов имеет планы различных и менее эффективно, чем на 20 узлов представления.

Решение

Чтобы решить эту проблему, получите последний пакет обновления для SQL Server 2000. Дополнительные сведения см. в следующей статье базы знаний Майкрософт::
290211INF: Как получить последний пакет обновления для SQL Server 2000

Временное решение

С помощью подсказку в запросе MERGE UNION будет обойти эту проблему. Убедитесь, что все подсказки оптимизатора были тщательно протестированы перед размещение в производственную среду.

Статус

Корпорация Майкрософт подтверждает, что это проблема в SQL Server 2000.Впервые эта проблема была исправлена в SQL Server 2000 с пакетом обновления 1 (SP1).

Дополнительная информация

Действия для воспроизведения поведения:

  1. Откройте окно в анализаторе запросов.
  2. в менюQuery:меню выбораПоказать план выполнения.
  3. Выполните следующий запрос:
    use Northwind
    go
    select top 1 * from
    (
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders union all
    select orderid from orders 
    union all select orderid from orders
    ) xx
    order by orderid
    					
  4. Перейдите на вкладкуExecution Planвкладки и просмотрите результаты.
  5. Закомментируйте следующую строку запроса:
    union all select orderid from orders
    					
  6. Выполнить измененный запрос и просмотреть изменения в планеExecution PlanTAB:.

Свойства

Код статьи: 295037 - Последний отзыв: 21 ноября 2010 г. - Revision: 2.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 2000 Standard Edition
Ключевые слова: 
kbbug kbfix kbsqlserv2000sp1fix kbmt KB295037 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:295037

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com