Вставьте данные в огромную таблицу с индексами - PullRequest
1 голос
/ 27 апреля 2011

Мне нужно вставить данные, и объем данных довольно велик. Есть несколько индексов, которые мне нужно определить для этой таблицы. Итак, мой вопрос ... что лучше и почему

  1. Создать таблицу -> Вставить данные -> Создать индексы
  2. или, Создать таблицу -> Создать индексы -> Вставить данные

Thnx, Vabs

Ответы [ 3 ]

4 голосов
/ 27 апреля 2011

выбор №1 будет быстрее, потому что более эффективно создавать индекс с нуля, чем путем добавления записей одна за другой. Это опять-таки связано с тем, что записи будут отсортированы заранее, а блоки индекса заполнены и записаны упорядоченным образом. В oracle вы также можете использовать «создание индекса ... nologging», чтобы избежать создания журнала повторов.

2 голосов
/ 27 апреля 2011

Когда вы создаете индекс, оракул может отсортировать всю таблицу во временном пространстве сортировки, а затем построить индекс из этого.

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

Так что загружать данные намного быстрее, чем строить индекс

0 голосов
/ 28 апреля 2011

Вариант № 1 будет обычно быстрее, но есть случаи, когда Вариант №2 мог бы быть быстрее - то есть когда у вас есть несколько INSERT, и одна или несколько последующих вставок запрашивают одну и ту же таблицу и используют одну или больше индексов.

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

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