Какой вариант лучше и быстрее? Вставка данных после создания индекса на пустой таблице или создании уникального индекса после вставки данных. Я имею вокруг 10M строки для вставки. Какой вариант был бы лучше так, чтобы у меня могло быть наименьшее количество времени простоя.
Сначала вставьте данные, затем создайте индекс.
Каждый раз, когда вы выполняете операцию UPDATE, INSERT или DELETE, любые индексы в таблице также должны обновляться. Таким образом, если вы сначала создадите индекс, а затем вставите 10М строк, то индекс также нужно будет обновлять 10М раз (если только вы не выполняете оптовые операции)
.Быстрее и лучше вставлять записи, а затем создавать индекс после импорта строк. Это быстрее, потому что у вас нет накладных расходов по обслуживанию индексов по мере вставки строк, и лучше с точки зрения фрагментации ваших индексов.
Очевидно, что для уникального индекса, убедитесь, что импортируемые данные уникальны, чтобы у вас не было сбоев при попытке создания индекса.
.Как сказали другие, сначала вставьте, а потом добавьте индекс. Если таблица уже существует, и вы должны вставить кучу данных, как эта, снять все индексы и ограничения, вставить данные, а затем снова применить сначала ваши индексы, а затем ваши ограничения. Вам наверняка захочется сделать промежуточные фиксации, чтобы исключить возможность того, что у вас закончится место в сегменте отката или что-то подобное. Если вы вставляете столько данных, то может оказаться полезным посмотреть на использование SQL*Loader, чтобы сэкономить время и снять напряжение.
Надеюсь, это поможет.