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

Переводы статьи Переводы статьи
Код статьи: 287515 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Проблема

При применении любые операторы и выражения в предложении 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 T1
GO

CREATE TABLE T1(  C1  NCHAR(1)  )

SET NOCOUNT ON

INSERT 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 C1
SELECT @Str1 = @Str1 + C1 FROM T1 ORDER BY LTRIM( RTRIM( C1 ) )
SELECT @Str2 = @Str2 + LTRIM( RTRIM( C1 ) ) FROM T1 ORDER BY C1

SELECT @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 <> @Str2
BEGIN
   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 OFF
END

SET NOCOUNT OFF

DROP TABLE T1
				

Свойства

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

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

 

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