Индексы в таблице базы данных - PullRequest
3 голосов
/ 06 мая 2011

Мне нужно будет вставить 1 миллиард кодов в таблицу базы данных SQL Server. Я буду использовать BULK INSERT для этого. У меня вопрос: нужно ли создавать индексы до или после вставки данных? Мне нужен самый быстрый вариант

Ответы [ 3 ]

2 голосов
/ 06 мая 2011

1 миллиард записей в одной таблице? Уч. Если вы имеете дело с объемами данных на этом уровне, и вам нужно задать этот вопрос на форуме, то вы можете быть не в своей тарелке. Вы должны создать индекс после вставки, но убедитесь, что статистика обновляется в таблице после вставки. Индекс будет работать против вас, если статистика не актуальна.

2 голосов
/ 06 мая 2011

Если во время вставки в таблице есть индексы, серверу необходимо постоянно переупорядочивать / разбивать на страницы таблицы, чтобы поддерживать актуальность индексов. Если вы отбросите индексы, он может просто добавить строки, не беспокоясь об этом, а затем создать индексы сразу, когда вы заново создадите их.

Читать о Массовая вставка .

См. Также:

объемная вставка с индексом или без индекса

1 голос
/ 06 мая 2011

Создание индексов раньше.BULK INSERT заботится об оптимизации индексации.

edit: кажется, что это верно только в том случае, если входные данные упорядочены по индексу.От http://msdn.microsoft.com/en-us/library/ms188365.aspx:

ORDER ({столбец [ASC | DESC]} [, ... n])

Указывает, как данные в файле данныхотсортирован.Производительность массового импорта улучшается, если импортируемые данные сортируются в соответствии с кластеризованным индексом в таблице, если есть

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...