Проблема: План выполнения и результатов статистических запросов объединения требуются при расположение выражения

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:287515
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Проблема
При применении любые операторы и выражения в предложении ORDER BY объединения статистических запросов, могут возникнуть непредвиденные результаты. Результаты объединения статистических запросов в Microsoft SQL Server, зависят ли выражения Transact-SQL, применяются для столбцов в предложении ORDER BY в запросе. Для получения дополнительных сведений или см. пример сцепления статистических запросов и поведение процесса обратитесь к разделу «Дополнительная информация» данной статьи.
Причина
Правильное поведение в запрос статистической объединение не определено.

Изучение запроса выходные данные SHOWPLAN показывает, что обработчик запросов SQL Server создает другой план, когда они будут выполняться со столбцами в запросе предложение ORDER BY, чем при применении одного и того же выражения для столбцов в списке SELECT запроса. Решение, выполненных обработчиком запросов основывается на стоимость планов выполнения, возможности.

В спецификации ANSI SQL-92 требует любого столбца, на который ссылается предложение ORDER BY результирующий набор, определенный по столбцам в списке SELECT. Когда выражение применяется к члену, предложение ORDER BY, результирующего столбца не отображается в списке SELECT, приводит к непредвиденному поведению.

Кроме того спецификации ANSI относительно как предложение ORDER BY используется для применения состояния, что эффект ORDER BY должны быть одинаковыми занять весь результирующий набор, созданный в списке SELECT, и затем выполнить заказ в таблице, на основе этих столбцов в списке SELECT.
Временное решение
Для достижения ожидаемых результатов из запроса статистические объединения, применяются все функции Transact-SQL или выражения для столбцов в списке SELECT, а не в предложении ORDER BY.
Дополнительная информация
Запрос на объединение статистические — это запрос, который объединяет значения из нескольких строк в одну строку.

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

Используйте следующий сценарий Transact-SQL для воспроизведения поведения.

Обратите внимание, приложение функции LTRIM и RTRIM [C1] столбец в предложении ORDER BY или в списке SELECT.
IF EXISTS( SELECT * FROM sysobjects WHERE name = 'T1' )	DROP TABLE T1GOCREATE TABLE T1(  C1  NCHAR(1)  )SET NOCOUNT ONINSERT T1 VALUES( 'A' )INSERT T1 VALUES( 'B' )DECLARE @Str0 VARCHAR(4) DECLARE @Str1 VARCHAR(4) DECLARE @Str2 VARCHAR(4) SET @Str0 = ''SET @Str1 = ''SET @Str2 = ''SELECT @Str0 = @Str0 + C1 FROM T1 ORDER BY C1SELECT @Str1 = @Str1 + C1 FROM T1 ORDER BY LTRIM( RTRIM( C1 ) )SELECT @Str2 = @Str2 + LTRIM( RTRIM( C1 ) ) FROM T1 ORDER BY C1SELECT @Str0 'No functions applied to column.'SELECT @Str1 'LTRIM() and RTRIM() applied to ORDER BY clause.'SELECT @Str2 'SELECT list with LTRIM(RTRIM()) (Workaround)'IF @Str1 <> @Str2BEGIN   PRINT ''   PRINT 'Execution plan depends on where the functions are applied:'   PRINT '=========================================================='   PRINT ''   SET @Str1 = ''   SET @Str2 = ''   SET STATISTICS PROFILE ON   SELECT @Str1 = @Str1 + C1 FROM T1 ORDER BY LTRIM( RTRIM( C1 ) )   SELECT @Str2 = @Str2 + LTRIM( RTRIM( C1 ) ) FROM T1 ORDER BY C1   SET STATISTICS PROFILE OFFENDSET NOCOUNT OFFDROP TABLE T1				
Неопределенный спецификации ANSI

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

Свойства

Номер статьи: 287515 — последний просмотр: 12/06/2015 00:18:47 — редакция: 2.0

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 7.0 Standard Edition

  • kbnosurvey kbarchive kbcodesnippet kbprb kbmt KB287515 KbMtru
Отзывы и предложения