Ответ на этот вопрос очень различается в зависимости от того, кластеризованы ли индексы, о которых вы говорите, или нет. Кластерные индексы заставляют SQL Server хранить данные в отсортированном порядке, поэтому, если вы попытаетесь вставить запись, которая не сортируется до конца вашего кластерного индекса, ваша вставка может привести к значительным перестановкам ваших данных, так как многие из ваших записи перемещаются, чтобы освободить место для вашей новой записи.
Некластеризованные индексы не имеют этой проблемы; все, что нужно сделать серверу, это отслеживать, где хранится новая запись. Таким образом, если ваш индекс кластеризован (большинство кластеризованных индексов являются первичными ключами, но это не обязательно; запустите sp_helpindex [TABLENAME] ", чтобы убедиться в этом), вам почти наверняка будет лучше добавить индекс после того, как все ваши вставки будут сделано.
Что касается производительности вставок в некластеризованных индексах, я не могу вам этого сказать; по моему опыту, замедление было недостаточно, чтобы беспокоиться о. Накладные расходы на индекс в этом случае будут значительно перевешены накладными расходами на выполнение всех ваших вставок по одному.
Редактирование: Поскольку вы можете позволить себе урезать всю таблицу с точки зрения производительности, вам почти наверняка лучше отбросить (или NOCHECKing) свои индексы и ограничения перед выполнением всех вставок, а затем добавить их обратно в конец.