Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Продолжительнй ALTER TABLE / 21 сообщений из 21, страница 1 из 1
30.03.2018, 14:14
    #39623291
_human
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
приветствую

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

Код: sql
1.
2.
ALTER TABLE <table> 
ADD <column> AS MONTH(<date_column>) PERSISTED; 


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

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

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

В доках не нашел упоминания что если дропнуть индексІь, перед добавлением то ето повлият на скорость
...
Рейтинг: 0 / 0
30.03.2018, 14:16
    #39623292
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
_human,

а проставить ваши 210М должно мигом?
после дропа индекса его прийдётся ещё и создавать
...
Рейтинг: 0 / 0
30.03.2018, 14:17
    #39623294
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
нужно было сначала новую таблицу сделать, перелить данные в неё из старой, дропнуть старую, а потом переименовать новую
...
Рейтинг: 0 / 0
30.03.2018, 14:20
    #39623298
Knyazev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
альтернатива:
1) создать поле NULL
2) посчитать его порциями
3) повесить логику вычисления MONTH(<date_column>) на триггер
...
Рейтинг: 0 / 0
30.03.2018, 14:23
    #39623304
_human
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
TaPaK,

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

хм, имеете ввиду SELECT *, MONTH(<date_column>) INTO <new TABLE> FROM ... ?
не вижу как ето ускорит
...
Рейтинг: 0 / 0
30.03.2018, 14:26
    #39623307
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
это не будет мешать работе основной системы
...
Рейтинг: 0 / 0
30.03.2018, 14:30
    #39623310
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
_human,

индексы вообще не причём. Серверу надо сохранить все значения.
...
Рейтинг: 0 / 0
30.03.2018, 14:33
    #39623314
_human
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
Konst_Oneэто не будет мешать работе основной системы
идею понял, но тут не тот случай.
Knyazev Alexey2) посчитать его порциями
3) повесить логику вычисления MONTH(<date_column>) на триггер
а можете чуть делальнее ?
...
Рейтинг: 0 / 0
30.03.2018, 14:35
    #39623317
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
_human,

вы с какой целью добавляете PERSISTED
...
Рейтинг: 0 / 0
30.03.2018, 14:36
    #39623318
_human
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
TaPaK,

partitioning
...
Рейтинг: 0 / 0
30.03.2018, 15:02
    #39623350
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
_human,

А чем 2 часа плохо? Один раз можно и подождать.
...
Рейтинг: 0 / 0
30.03.2018, 15:07
    #39623359
_human
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
Владислав Колосов,

Так и будет если ничего бьІстрее не напишу
...
Рейтинг: 0 / 0
30.03.2018, 16:07
    #39623415
AlanDenton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
_humanpartitioning
Не хочу тупить в пятницу, но разве нужно чтобы вычисляемое поле было PERSISTED, чтобы могло участвовать в функции секционирования?

И почему не подсунуть в функцию секционирования поле DATETIME, а не плодить еще один столбец? Который еще и будет ложить в одну секцию данные с разных годов (март 2017, март 2018).
...
Рейтинг: 0 / 0
30.03.2018, 16:13
    #39623417
_human
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
AlanDenton,


AlanDentonНе хочу тупить в пятницу
ну ето как бьІ закон давньІм давно

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

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

+Целевая таблица не хранит и не будет хранить исторических данньІх
...
Рейтинг: 0 / 0
30.03.2018, 16:14
    #39623420
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
AlanDenton_humanpartitioning
Не хочу тупить в пятницу, но разве нужно чтобы вычисляемое поле было PERSISTED, чтобы могло участвовать в функции секционирования?

И почему не подсунуть в функцию секционирования поле DATETIME, а не плодить еще один столбец? Который еще и будет ложить в одну секцию данные с разных годов (март 2017, март 2018).
для самого секционирования не надо, но вопрос как они потом будут работать, ну и последнее предложение в точку
...
Рейтинг: 0 / 0
30.03.2018, 16:15
    #39623421
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
_human,

авторну ето как бьІ закон давньІм давно
закон чего? джунглей?
...
Рейтинг: 0 / 0
30.03.2018, 16:17
    #39623424
_human
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
Knyazev Alexey,


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

Можете пояснить свое решение ?
...
Рейтинг: 0 / 0
30.03.2018, 16:18
    #39623426
AlanDenton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
TaPaKдля самого секционирования не надо
Спасибо. То начал думал, что чего-то таки не знаю. Если раньше на обычном вычисляемом столбце все крутилось.

_human не нужно постоянно поддерживать парт. ф-ию
А не легче нагенерить диапазон на несколько лет вперед и складировать в рамках одной файловой группы?
...
Рейтинг: 0 / 0
30.03.2018, 16:19
    #39623429
_human
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
AlanDentonА не легче нагенерить диапазон на несколько лет вперед и складировать в рамках одной файловой группы?
нет не лучше.

давайте по теме, если больше предложений нет
...
Рейтинг: 0 / 0
30.03.2018, 16:22
    #39623431
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
AlanDenton,

не по полю должно быть persisted, но секционировать можно и по существующему полю date_column
...
Рейтинг: 0 / 0
30.03.2018, 16:25
    #39623437
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжительнй ALTER TABLE
_humanAlanDentonА не легче нагенерить диапазон на несколько лет вперед и складировать в рамках одной файловой группы?
нет не лучше.

давайте по теме, если больше предложений нет
быстрого способа нет. Либо проставить целиком, или проставить частями и считать дальше чем угодно.
Второй способ точно не быстрее, но объект не умрёт на время выполнения
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Продолжительнй ALTER TABLE / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]