powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Новое поле и новый индекс на большую таблицу?
18 сообщений из 18, страница 1 из 1
Новое поле и новый индекс на большую таблицу?
    #40010824
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Подскажите, будет ли разница, если я:
1. Создам новое поле c NULL значением на таблице, заполню его значениями и начну строить по этому полю индекс.
2. Создам новое поле c NULL значением на таблице, создам индекс по пустому полю, а потом начну заполнять это поле.

Смогу ли я избежать длинной блокировки таблицы используя второй вариант или сиквелу все равно придется сканить все строки и разницы в длине блокировки между этими вариантами не будет?
...
Рейтинг: 0 / 0
Новое поле и новый индекс на большую таблицу?
    #40010826
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa,

Версия 2016St
...
Рейтинг: 0 / 0
Новое поле и новый индекс на большую таблицу?
    #40010835
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде как рекомендуют сначала заполнить, а потом строить индекс.
...
Рейтинг: 0 / 0
Новое поле и новый индекс на большую таблицу?
    #40010845
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa,

на Enterprise можно использовать ONLINE построение индекса.
...
Рейтинг: 0 / 0
Новое поле и новый индекс на большую таблицу?
    #40011017
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
teCa,

на Enterprise можно использовать ONLINE построение индекса.
У автора же стандарт.

teCa
Смогу ли я избежать длинной блокировки таблицы используя второй вариант или сиквелу все равно придется сканить все строки и разницы в длине блокировки между этими вариантами не будет?
Так для варианта 2 можно заполнять порциями.
Если онлайн-индексация недоступна, а длительное отключение запрещено, то это безальтернативный вариант. Хоть месяц заполняйте.
Как то переделывал многотерабайтную таблицу, что то типа ПК с гуида на инт, без прерывания работы сервиса. И ничего, за месяц отработало, без пострадавших юзеров :-)
...
Рейтинг: 0 / 0
Новое поле и новый индекс на большую таблицу?
    #40011048
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,
Разумеется, заполнять поля я буду порциями, меня интересует, если я перед заполнением построение индекса запущу, он быстро построится или все равно залочит всю таблицу целиком и будет сканировать все строки в таблицу, невзирая на то, что мы то знаем, что все поля пустые, сиквел этого при построении индекса не будет же знать или будет?
...
Рейтинг: 0 / 0
Новое поле и новый индекс на большую таблицу?
    #40011050
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa,
Грубо говоря, если я запущу построение индекса по полю, в котором 500млн NULL, индекс быстро построится?)
...
Рейтинг: 0 / 0
Новое поле и новый индекс на большую таблицу?
    #40011051
Mr. X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
teCa,

Во втором случае блокировка будет минимальной. Когда добавляется столбец в котором допускается NULL, то фактически строки не изменяются. А создающийся вслед за этим индекс (только из этого ключевого поля и без инклюдов) создаст кратковременную блокировку.
...
Рейтинг: 0 / 0
Новое поле и новый индекс на большую таблицу?
    #40011052
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa Грубо говоря, если я запущу построение индекса по полю, в котором 500млн NULL, индекс быстро построится?) Не быстрее чем обычно. А вот обновление потребует внесения изменений в таблицу и индекс
...
Рейтинг: 0 / 0
Новое поле и новый индекс на большую таблицу?
    #40011241
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa
alexeyvg,
Разумеется, заполнять поля я буду порциями, меня интересует, если я перед заполнением построение индекса запущу, он быстро построится или все равно залочит всю таблицу целиком и будет сканировать все строки в таблицу, невзирая на то, что мы то знаем, что все поля пустые, сиквел этого при построении индекса не будет же знать или будет?
Мда, глупость я выше написал, конечно, индекс построится за такое же время, как и для заполненной колонки, несмотря на то, что добавление поля null не меняет страницы.
...
Рейтинг: 0 / 0
Новое поле и новый индекс на большую таблицу?
    #40011269
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr. X
teCa,

Во втором случае блокировка будет минимальной. Когда добавляется столбец в котором допускается NULL, то фактически строки не изменяются.
А создающийся вслед за этим индекс (только из этого ключевого поля и без инклюдов) создаст кратковременную блокировку.

пункт 1 верный, пункт 2 полный бред.
у ТС Стандард, никаких онлайновых индексов.
и на все время построения индекса таблица будет недоступной.
а читать придется ровно те же строки, если их 400Гб,
то все 400Гб, хоть там и все наллы в нужном поле.
так что никакой вам "кратковременной блокировки".
...
Рейтинг: 0 / 0
Новое поле и новый индекс на большую таблицу?
    #40011292
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На стандарте сервер не может работать 24/7, покупайте для этого Enterprise.
Иначе планируйте время на регламентное обслуживание.
...
Рейтинг: 0 / 0
Новое поле и новый индекс на большую таблицу?
    #40011295
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
На стандарте сервер не может работать 24/7, покупайте для этого Enterprise.
Иначе планируйте время на регламентное обслуживание.

он вроде не о покупке Энтерпраиза спрашивал,
а
авторили все равно залочит всю таблицу целиком и будет сканировать все строки в таблицу,
невзирая на то, что мы то знаем, что все поля пустые,
сиквел этого при построении индекса не будет же знать или будет?

ответ: мы-то знаем, а сканироваться будет вся таблица.

ему пофиг, чем вы там заполняли,
его, возможно, смог бы убедить check constraint,
не позволяющий писать неналлы в это поле, но только трастед.
a получить трастед чек это тоже залочить таблицу на все время проверки
...
Рейтинг: 0 / 0
Новое поле и новый индекс на большую таблицу?
    #40011297
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123
ответ: мы-то знаем, а сканироваться будет вся таблица.

ему пофиг, чем вы там заполняли,
его, возможно, смог бы убедить check constraint,
не позволяющий писать неналлы в это поле, но только трастед.
a получить трастед чек это тоже залочить таблицу на все время проверки

не смог бы.

в любом случае, для построения некластерного индекса потребуется значение ключа кластерного всех строк.
...
Рейтинг: 0 / 0
Новое поле и новый индекс на большую таблицу?
    #40011301
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex
в любом случае, для построения некластерного индекса потребуется значение ключа кластерного всех строк.
"потребуется" в данном случае особенность реализации, а не объективная необходимость.
Впрочем, для понимания, как следует писать запросы, разницы нет.
...
Рейтинг: 0 / 0
Новое поле и новый индекс на большую таблицу?
    #40011303
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
msLex
в любом случае, для построения некластерного индекса потребуется значение ключа кластерного всех строк.
"потребуется" в данном случае особенность реализации, а не объективная необходимость.
Впрочем, для понимания, как следует писать запросы, разницы нет.


хмм, как вы себе представляете индекс, в котором нет никакой ссылки на данные?
...
Рейтинг: 0 / 0
Новое поле и новый индекс на большую таблицу?
    #40011306
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex

в любом случае, для построения некластерного индекса потребуется значение ключа кластерного всех строк.

да уж.
хоть RID, хоть ключ кластерного, обратная связь должна быть, все верно.
а раз вы тут, может, ответите про фильтрованный индекс?
сейчас создам тему
...
Рейтинг: 0 / 0
Новое поле и новый индекс на большую таблицу?
    #40011341
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex
alexeyvg
пропущено...
"потребуется" в данном случае особенность реализации, а не объективная необходимость.
Впрочем, для понимания, как следует писать запросы, разницы нет.


хмм, как вы себе представляете индекс, в котором нет никакой ссылки на данные?
Вообще да, IS NULL он же тоже должен находить...
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Новое поле и новый индекс на большую таблицу?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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