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

Откуда: Чебаркуль
Сообщений: 4187
В таблицу (100 млн записей) добавил поле

ALTER TABLE dbo.t ADD [marked_date] SMALLDATETIME SPARSE;


затем выполнил:
alter table dbo.t rebuild


Работает минут 8.

Я так понимаю ребилд делать нужно, но можно ли ускорить как-то? не делать ребилд?
1 мар 16, 11:20    [18881212]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли ускорить Alter Table Rebuild?  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Можно вопрос. Зачем Вы делаете ребилд? В чем сакральный смысл сего действия? + marked_date столбец какое % соотношение нулов имеет относительно общего числа строк?
1 мар 16, 11:25    [18881242]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли ускорить Alter Table Rebuild?  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
SELECT COUNT_BIG(marked_date) * 1. / COUNT_BIG(1)
FROM tbl

Нулов должно быть хотя бы 65% (лучше > 70%) чтобы использование SPARSE было оправданным.
1 мар 16, 11:27    [18881253]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли ускорить Alter Table Rebuild?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4187
AlanDenton
SELECT COUNT_BIG(marked_date) * 1. / COUNT_BIG(1)
FROM tbl

Нулов должно быть хотя бы 65% (лучше > 70%) чтобы использование SPARSE было оправданным.


Использование оправдано, нуллов больше 90%.
1 мар 16, 11:45    [18881354]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли ускорить Alter Table Rebuild?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8839
Ролг Хупин,

сохранить not null значения, дропнуть столбец, добавить новый и вставить из сохраненных.
1 мар 16, 11:49    [18881383]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли ускорить Alter Table Rebuild?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4187
AlanDenton
Можно вопрос. Зачем Вы делаете ребилд? В чем сакральный смысл сего действия? + marked_date столбец какое % соотношение нулов имеет относительно общего числа строк?


Кстати, да, видимо я не прав, ребилд не нужен
Я не меняю тип поля, я добавляю новое

автор
Changing a column from sparse to nonsparse or nonsparse to sparse requires changing the storage format of the column. The SQL Server Database Engine uses the following procedure to accomplish this change:
Adds a new column to the table in the new storage size and format.
For each row in the table, updates and copies the value stored in the old column to the new column.
Removes the old column from the table schema.
Rebuilds the table (if there is no clustered index) or rebuilds the clustered index to reclaim space used by the old column.
1 мар 16, 11:50    [18881387]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить