Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Накапливающий итог в NVarChar(MAX) долго отрабатывает.  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Есть табличка
  DECLARE @Res TABLE ([Res] Varchar(2000))

В табличке есть примерно 50к строк. Средний размер строки 380 байт. (2000 взял с запасом на разное)

SELECT * FROM @Res
30 сек

DECLARE @Data NVarChar(MAX) 
SET @Data = '' 
SELECT @Data = @Data + [Res] + Char(13) FROM @Res 

За 20 мин не прокуртилось, выключил.

sp_WhoIsActive показывает в основном PAGEIOLATCH_SH


SQL SERVER 2005
30 апр 13, 11:43    [14248442]     Ответить | Цитировать Сообщить модератору
 Re: Накапливающий итог в NVarChar(MAX) долго отрабатывает.  [new]
iap
Member

Откуда: Москва
Сообщений: 47085
Cammomile,

в @Res поле типа VARCHAR(2000), а накопление в юникодный BLOB NVARCHAR(MAX)?
Как-то неправильно это.

Про букву N перед литеральными юникодными строками промолчу.

Применение табличной переменной для такого количества строк сомнительно. Хотя, кто знает...
30 апр 13, 11:51    [14248521]     Ответить | Цитировать Сообщить модератору
 Re: Накапливающий итог в NVarChar(MAX) долго отрабатывает.  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Да тащеста если поменять в @Res на Nvarchar ничего не меняется

А что буква N?
30 апр 13, 12:12    [14248643]     Ответить | Цитировать Сообщить модератору
 Re: Накапливающий итог в NVarChar(MAX) долго отрабатывает.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Cammomile,

Вот тут гляньте: Как быстро собрать записи в строку?
30 апр 13, 12:18    [14248678]     Ответить | Цитировать Сообщить модератору
 Re: Накапливающий итог в NVarChar(MAX) долго отрабатывает.  [new]
iap
Member

Откуда: Москва
Сообщений: 47085
Cammomile
Да тащеста если поменять в @Res на Nvarchar ничего не меняется

А что буква N?
Без неё - неявное конвертирование.
Бывают сюрпризы.
30 апр 13, 12:26    [14248733]     Ответить | Цитировать Сообщить модератору
 Re: Накапливающий итог в NVarChar(MAX) долго отрабатывает.  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Спасибо Гость333, дикое шаманство с XML спасает.
30 апр 13, 15:07    [14249782]     Ответить | Цитировать Сообщить модератору
 Re: Накапливающий итог в NVarChar(MAX) долго отрабатывает.  [new]
step_ks
Member

Откуда:
Сообщений: 936
low performance in string concatenation
30 апр 13, 22:58    [14251630]     Ответить | Цитировать Сообщить модератору
 Re: Накапливающий итог в NVarChar(MAX) долго отрабатывает.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31868
step_ks
low performance in string concatenation
Красиво ответил микрософт:
connect
This is the current design limitation. I think the correct way is to support this is an aggregate function, rather than using string concatenation.

Но агрегатных строковых функций тем не менее так и не появилось :-(
1 май 13, 00:03    [14251822]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить