powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Быстро добавить колонку в большую табличку SQL Server 2016 с дефолтным значением
12 сообщений из 12, страница 1 из 1
Быстро добавить колонку в большую табличку SQL Server 2016 с дефолтным значением
    #39817015
Павел677
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем.

Можете помочь с проблемой долгого добавления колонки в табличку с 24 млн записей, ограничением NOT NULL и дефолтным значением '' ?

SQL Server 2016

Погуглил, сходу ничего простого не нашлось.
Только сложные варианты
http://qaru.site/questions/109057/how-do-you-add-a-not-null-column-to-a-large-table-in-sql-server

Я раньше работал с ораклом, там в 9-й версии была такая же проблема.
Начиная с версии 10 добавление происходит очень быстро, буквально за секунды.

Как пояснял мне админ, там при добавлении столбца с ограничением NOT NULL и дефолтным значением, значением не пишется во все записи, а хранится в определении таблички и из-за этого удается достичь такого ускорения. Это было очень удобно.


Я подумал, неужели в SQL Server к 2016-й версии не изобрели что-то аналогичное ?
...
Рейтинг: 0 / 0
Быстро добавить колонку в большую табличку SQL Server 2016 с дефолтным значением
    #39817016
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел677,

версия конкретно?
...
Рейтинг: 0 / 0
Быстро добавить колонку в большую табличку SQL Server 2016 с дефолтным значением
    #39817023
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не важно, только в enterprise

авторStarting with SQL Server 2012 (11.x) Enterprise Edition, adding a NOT NULL column with a default value is an online operation when the default value is a runtime constant. This means that the operation is completed almost instantaneously despite the number of rows in the table. Because, the existing rows in the table aren't updated during the operation. Instead, the default value is stored only in the metadata of the table and the value is looked up, as needed, in queries that access these rows. This behavior is automatic. No additional syntax is required to implement the online operation beyond the ADD COLUMN syntax.
...
Рейтинг: 0 / 0
Быстро добавить колонку в большую табличку SQL Server 2016 с дефолтным значением
    #39817024
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел677,

а куда вы торопитесь? Речь-то, всё-таки, идёт о разовом изменении структуры.
Пока вы ждёте здесь ответа, поле в таблицу уже давно бы добавилось, а?
...
Рейтинг: 0 / 0
Быстро добавить колонку в большую табличку SQL Server 2016 с дефолтным значением
    #39817025
Павел677
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select @@version
выдает
Microsoft SQL Server 2016 (SP2-CU5) (KB4475776) - 13.0.5264.1 (X64) Jan 10 2019 18:51:38 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows Server 2016 Standard 10.0 <X64> (Build 14393: ) (Hypervisor)


Запрос думал 726 секунд. Но это похоже и-за того что сервак мощный.
На деве/тесте будут слезы на 1-2 часа.
...
Рейтинг: 0 / 0
Быстро добавить колонку в большую табличку SQL Server 2016 с дефолтным значением
    #39817036
Павел677
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot TaPaK]не важно, только в enterprise

Спасибо за отклик.
Попробовал с той же табличкой в Enterprise версии, все сработало мгновенно.

Не ожидал такой подставы.
Вопрос закрыт.

P.S.
А для стандарт версии есть какие-нить обходные способы ?
...
Рейтинг: 0 / 0
Быстро добавить колонку в большую табличку SQL Server 2016 с дефолтным значением
    #39817039
Павел677
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iapПавел677,

а куда вы торопитесь? Речь-то, всё-таки, идёт о разовом изменении структуры.
Пока вы ждёте здесь ответа, поле в таблицу уже давно бы добавилось, а?

На нашем проекте это не такая редкая ситуация. Плюс в момент таких изменений весь SQL как бы фризится. С ним становится невозможно работать и никто из разработчиков в деве не может работать. В общем, отдел разработки уходит курить на 1-2 часа.
...
Рейтинг: 0 / 0
Быстро добавить колонку в большую табличку SQL Server 2016 с дефолтным значением
    #39817044
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел677А для стандарт версии есть какие-нить обходные способы ?Добавить столбец как null.
Проапдейтить порциями.
Сделать столбец not null

А разработчиков перевести на Developer Edition
...
Рейтинг: 0 / 0
Быстро добавить колонку в большую табличку SQL Server 2016 с дефолтным значением
    #39817101
sti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmПавел677А для стандарт версии есть какие-нить обходные способы ?Добавить столбец как null.
Проапдейтить порциями.
Сделать столбец not null

А разработчиков перевести на Developer Edition

+1
Ну или запустить скрипт в джобе ночью, когда ваши разработчики спят.
...
Рейтинг: 0 / 0
Быстро добавить колонку в большую табличку SQL Server 2016 с дефолтным значением
    #39817110
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел677iapПавел677,

а куда вы торопитесь? Речь-то, всё-таки, идёт о разовом изменении структуры.
Пока вы ждёте здесь ответа, поле в таблицу уже давно бы добавилось, а?

На нашем проекте это не такая редкая ситуация. Плюс в момент таких изменений весь SQL как бы фризится. С ним становится невозможно работать и никто из разработчиков в деве не может работать. В общем, отдел разработки уходит курить на 1-2 часа.
вопрос зачем девам стандарт не ясен :)
ну и сервер не для личной разработки желательно лучше калькулятора
...
Рейтинг: 0 / 0
Быстро добавить колонку в большую табличку SQL Server 2016 с дефолтным значением
    #39817120
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stiinvmпропущено...
Добавить столбец как null.
Проапдейтить порциями.
Сделать столбец not null

А разработчиков перевести на Developer Edition

+1
Ну или запустить скрипт в джобе ночью, когда ваши разработчики спят.Вот, например, у нас если спят в Москве, то работать начинают где-нибудь в Америке.
Или на Дальнем Востоке. Разные бывают ситуации.
...
Рейтинг: 0 / 0
Быстро добавить колонку в большую табличку SQL Server 2016 с дефолтным значением
    #39817146
Посетитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapstiпропущено...


+1
Ну или запустить скрипт в джобе ночью, когда ваши разработчики спят.Вот, например, у нас если спят в Москве, то работать начинают где-нибудь в Америке.
Или на Дальнем Востоке. Разные бывают ситуации.
тогда страдать должны те, чьё рабочее время дешевле.
или те, у кого производительность ниже
это если исключить более разумные варианты :)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Быстро добавить колонку в большую табличку SQL Server 2016 с дефолтным значением
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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