Как написать очень большой JOIN или его аналог?

В чем суть.
Есть куча (m, где-то в районе 50) однотипных табличек с двумя колонками: id -- primary key и value -- некое число double precision. В каждой табличке одно и то же количество одних и тех же id (а строк может быть достаточно много, несколько миллионов).
Задача вроде бы и не сложная: объединить все маленькие таблички в одну большую вида (id, table_1.value, ..., table_n.value).
Есть два решения. Первое -- CREATE TABLE blabla as SELECT с большим длинным JOINом, который вроде бы работает достаточно быстро, но только на Postgres и только на небольшом датасете (а на большом БД не хватает оперативной памяти). На другом движке БД, Greenplum, JOIN по большому числу столбцов просто вешает базу.
Второе решение -- вначале сделать таблицу выбором всех primary key, а потом последовательно добавлять соответствующие столбцы. Это способ занимает слишком много времени.

А есть ли какое-то быстрое решение задачи?
  • Вопрос задан
  • 295 просмотров
Пригласить эксперта
Ответы на вопрос 2
Splo1ter
@Splo1ter
.NET Developer (9 years+)
Не та структура данных, вот и наступили на грабли.
Ответ написан
Запилить внешний скрипт, который параллельно будет бежать по 50 таблицам в порядке возрастания id, комбинировать строки и лить их в сводную таблицу?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы