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

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

Эта статья на английском языке: 295037
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
ОШИБКА #: 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 Northwindgoselect top 1 * from(select orderid from orders union allselect orderid from orders union allselect orderid from orders union allselect orderid from orders union allselect orderid from orders union allselect orderid from orders union allselect orderid from orders union allselect orderid from orders union allselect orderid from orders union allselect orderid from orders union allselect orderid from orders union allselect orderid from orders union allselect orderid from orders union allselect orderid from orders union allselect orderid from orders union allselect orderid from orders union allselect orderid from orders union allselect orderid from orders union allselect orderid from orders union allselect orderid from orders union all select orderid from orders) xxorder by orderid					
  4. Перейдите на вкладкуExecution Planвкладки и просмотрите результаты.
  5. Закомментируйте следующую строку запроса:
    union all select orderid from orders					
  6. Выполнить измененный запрос и просмотреть изменения в планеExecution PlanTAB:.

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

Свойства

Номер статьи: 295037 — последний просмотр: 01/16/2015 22:17:25 — редакция: 3.0

Microsoft SQL Server 2000 Standard Edition

  • kbnosurvey kbarchive kbbug kbfix kbsqlserv2000sp1fix kbmt KB295037 KbMtru
Отзывы и предложения
ERROR: at System.Diagnostics.Process.Kill() at Microsoft.Support.SEOInfrastructureService.PhantomJS.PhantomJSRunner.WaitForExit(Process process, Int32 waitTime, StringBuilder dataBuilder, Boolean isTotalProcessTimeout)