Я должен заполнить таблицу с огромным объемом данных (много часов, загрузившись) на базе данных Oracle, и я задавался вопросом, который будет быстрее, для создания индекса на таблице прежде, чем загрузить его или после загрузки его. Я первоначально думал, что вставка на индексированной таблице оштрафована, но затем если я создаю индекс с полной таблицей, потребуется много времени. Который является лучшим?
Создание индексов после загрузки данных намного быстрее. Если вы загружаете данные в таблицу с индексами, загрузка будет очень медленной из-за обновлений постоянного индекса. Если вы создаете индекс позже, он может быть эффективно заполнен только один раз (который, конечно, займет некоторое время, но Grand Total должен быть меньше).
Подобная логика применяется к ограничениям. Также включите тех позже (если вы не ожидаете, что данные потерпят неудачу и хотите знать, что рано).
Единственная причина, по которой вы, возможно, захотите создать индекс в первую очередь, заключается в применении уникальных ограничений. В противном случае, загрузка происходит намного быстрее с обнаженной таблицей - никаких индексов, ограничений, триггеров не включено.
Создание индекса после загрузки данных является рекомендуемой практикой при объемной загрузке. Вы должны быть уверены в качестве поступающих данных, особенно если вы используете уникальные индексы. Отсутствие индекса означает, что проверка данных, которая происходит из-за наличия уникальных индексов, не произойдет. Другой вопрос для вас, чтобы рассмотреть, есть ли у вас одноразовая операция загрузки или это будет обычным делом? Если это обычное дело, то вы можете опустить индексы перед каждой загрузкой данных и воссоздать их после успешной загрузки.