#sql #postgresql
#sql #postgresql
Вопрос:
Ищу способ эффективного выполнения вставки нескольких таблиц в Postgres (немного похоже на инструкцию INSERT ALL в Oracle). Допустим, у меня есть следующая таблица драйверов:
ID, Data
----------------
10, 'Table 1 data'
11, 'Table 2 data'
10, 'More Table 1 data'
Итак, все записи ID = 10 должны быть вставлены в таблицу 1, ID = 11 в таблицу 2 и т.д… Реальная таблица драйверов содержит> 350 миллионов записей с примерно 12 различными идентификаторами, поэтому мы ищем способ сделать это максимально эффективно, используя только SQL.
Комментарии:
1. Предполагая, что у вас есть только 12 различных
ID
значений, что было бы неправильно просто использовать 12 разных операторов insert?2. Это 12 ( вставить в select … где … ) из таблицы с более чем 350 миллионами записей. Конечно, я мог бы сделать это таким образом, это заняло бы целую вечность. Простой выбор количества (*) таблицы занимает почти 3 минуты
3. Для тех из нас, кто не знаком с Oracle, не могли бы вы привести пример или ссылку на то, что делает «ВСТАВИТЬ ВСЕ» и как это будет использоваться в вашей ситуации? Это может помочь уточнить, что вы ищете.
4. Как насчет разбиения таблицы по идентификатору?
5. Пожалуйста, посмотрите эту ссылку для Oracle oracle-base.com/articles/9i/multitable-inserts . В частности, раздел условной вставки ВСЕХ