вставки нескольких таблиц в postgres

#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 . В частности, раздел условной вставки ВСЕХ