Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Продолжительнй ALTER TABLE  [new]
_human
Member

Откуда:
Сообщений: 556
приветствую

Имеется таблица с большим кол-вом записей приблизительно 210М.

ALTER TABLE <table> 
ADD <column> AS MONTH(<date_column>) PERSISTED; 

вІьполняется около двух часов.

Вопрос: есть ли возможность ускорить ?

на таблице 2-а индекса.

В доках не нашел упоминания что если дропнуть индексІь, перед добавлением то ето повлият на скорость
30 мар 18, 14:14    [21299466]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
_human,

а проставить ваши 210М должно мигом?
после дропа индекса его прийдётся ещё и создавать
30 мар 18, 14:16    [21299476]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
нужно было сначала новую таблицу сделать, перелить данные в неё из старой, дропнуть старую, а потом переименовать новую
30 мар 18, 14:17    [21299481]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10240
Блог
альтернатива:
1) создать поле NULL
2) посчитать его порциями
3) повесить логику вычисления MONTH(<date_column>) на триггер
30 мар 18, 14:20    [21299507]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
_human
Member

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

ситуация такая что индексьІ будут дропрутьІ позже, но как я понимаю ето не поможет.
Konst_One
нужно было сначала новую таблицу сделать, перелить данные в неё из старой, дропнуть старую, а потом переименовать новую


хм, имеете ввиду SELECT *, MONTH(<date_column>) INTO <new TABLE> FROM ... ?
не вижу как ето ускорит
30 мар 18, 14:23    [21299528]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
это не будет мешать работе основной системы
30 мар 18, 14:26    [21299547]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
_human,

индексы вообще не причём. Серверу надо сохранить все значения.
30 мар 18, 14:30    [21299562]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
_human
Member

Откуда:
Сообщений: 556
Konst_One
это не будет мешать работе основной системы

идею понял, но тут не тот случай.
Knyazev Alexey
2) посчитать его порциями
3) повесить логику вычисления MONTH(<date_column>) на триггер

а можете чуть делальнее ?
30 мар 18, 14:33    [21299585]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
_human,

вы с какой целью добавляете PERSISTED
30 мар 18, 14:35    [21299606]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
_human
Member

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

partitioning
30 мар 18, 14:36    [21299611]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
Владислав Колосов
Member

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

А чем 2 часа плохо? Один раз можно и подождать.
30 мар 18, 15:02    [21299734]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
_human
Member

Откуда:
Сообщений: 556
Владислав Колосов,

Так и будет если ничего бьІстрее не напишу
30 мар 18, 15:07    [21299767]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
_human
partitioning

Не хочу тупить в пятницу, но разве нужно чтобы вычисляемое поле было PERSISTED, чтобы могло участвовать в функции секционирования?

И почему не подсунуть в функцию секционирования поле DATETIME, а не плодить еще один столбец? Который еще и будет ложить в одну секцию данные с разных годов (март 2017, март 2018).
30 мар 18, 16:07    [21300069]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
_human
Member

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


AlanDenton
Не хочу тупить в пятницу

ну ето как бьІ закон давньІм давно

Да, поле должно бьІть PERSISTED.

AlanDenton
И почему не подсунуть в функцию секционирования поле DATETIME

Потому что только 12 кусков. + не нужно постоянно поддерживать парт. ф-ию

+Целевая таблица не хранит и не будет хранить исторических данньІх
30 мар 18, 16:13    [21300118]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
AlanDenton
_human
partitioning

Не хочу тупить в пятницу, но разве нужно чтобы вычисляемое поле было PERSISTED, чтобы могло участвовать в функции секционирования?

И почему не подсунуть в функцию секционирования поле DATETIME, а не плодить еще один столбец? Который еще и будет ложить в одну секцию данные с разных годов (март 2017, март 2018).

для самого секционирования не надо, но вопрос как они потом будут работать, ну и последнее предложение в точку
30 мар 18, 16:14    [21300125]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
_human,

автор
ну ето как бьІ закон давньІм давно

закон чего? джунглей?
30 мар 18, 16:15    [21300130]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
_human
Member

Откуда:
Сообщений: 556
Knyazev Alexey,


Knyazev Alexey
альтернатива:
1) создать поле NULL
2) посчитать его порциями
3) повесить логику вычисления MONTH(<date_column>) на триггер


Можете пояснить свое решение ?
30 мар 18, 16:17    [21300142]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
TaPaK
для самого секционирования не надо

Спасибо. То начал думал, что чего-то таки не знаю. Если раньше на обычном вычисляемом столбце все крутилось.

_human
не нужно постоянно поддерживать парт. ф-ию

А не легче нагенерить диапазон на несколько лет вперед и складировать в рамках одной файловой группы?
30 мар 18, 16:18    [21300146]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
_human
Member

Откуда:
Сообщений: 556
AlanDenton
А не легче нагенерить диапазон на несколько лет вперед и складировать в рамках одной файловой группы?

нет не лучше.

давайте по теме, если больше предложений нет
30 мар 18, 16:19    [21300152]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
AlanDenton,

не по полю должно быть persisted, но секционировать можно и по существующему полю date_column
30 мар 18, 16:22    [21300164]     Ответить | Цитировать Сообщить модератору
 Re: Продолжительнй ALTER TABLE  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
_human
AlanDenton
А не легче нагенерить диапазон на несколько лет вперед и складировать в рамках одной файловой группы?

нет не лучше.

давайте по теме, если больше предложений нет

быстрого способа нет. Либо проставить целиком, или проставить частями и считать дальше чем угодно.
Второй способ точно не быстрее, но объект не умрёт на время выполнения
30 мар 18, 16:25    [21300179]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить