Лучше ли создавать Oracle SQL индексы до или после загрузки данных? - PullRequest
5 голосов
/ 29 января 2010

Мне нужно заполнить таблицу огромным количеством данных (многочасовая загрузка) в базе данных Oracle, и мне было интересно, что будет быстрее, создать индекс для таблицы перед загрузкой или после загрузки. Сначала я думал, что вставка в индексированную таблицу оштрафована, но затем, если я создам индекс с полной таблицей, это займет много времени. Что лучше?

Ответы [ 3 ]

12 голосов
/ 29 января 2010

Создание индексов после загрузки данных происходит намного быстрее. Если вы загрузите данные в таблицу с индексами, загрузка будет очень медленной из-за постоянных обновлений индекса. Если вы создадите индекс позже, он может быть эффективно заполнен только один раз (что, конечно, может занять некоторое время, но общая сумма должна быть меньше).

Аналогичная логика применяется к ограничениям. Также включите их позже (если только вы не ожидаете, что данные выйдут из-под ограничений и не захотите знать это на раннем этапе).

2 голосов
/ 29 января 2010

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

1 голос
/ 29 января 2010

Создание индекса после загрузки данных является рекомендуемой практикой для массовых загрузок. Вы должны быть уверены в качестве входящих данных, особенно если вы используете уникальные индексы. Отсутствие индекса означает, что проверка данных, которая происходит из-за наличия уникальных индексов, не произойдет. Еще одна проблема, которую вы должны рассмотреть: есть ли у вас операция однократной загрузки или это будет обычное дело? Если это обычное дело, вы можете удалить индексы перед каждой загрузкой данных и воссоздать их после успешной загрузки.

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