Объединение нескольких больших столов - PullRequest
1 голос
/ 03 февраля 2012

У меня три таблицы

Table T1: Columns {a,b,c}, combination {a,b} is unique in Table T1
Table T2: Columns {a,c,d}, combination {a,c} is unique in Table T2
Table T3: Columns {a,c,e}, combination {a,c} is unique in Table T3

где {a, b, c} - строки, а {d, e} - числа

Я хочу, чтобы мой вывод был

Table T4: Columns {a,b} where e/d < x.

Таблицы T1, T2, T3 очень большие (миллионы строк), поэтому я реализовал это, выполнив левое соединение с таблицей T1 T2 и сохранив результаты во временной таблице, затем выполнив левое соединение таблицы T1 T3 и сохраняя результаты, затем выполняйте левое объединение результатов и, наконец, объединяйте эти временные таблицы в 1 финальную таблицу.

У меня вопрос: есть ли лучший / более эффективный способ сделать это без взрыва базы данных?

1 Ответ

1 голос
/ 03 февраля 2012

Вы пытались сделать это прямым путем?

select t1.a, t1.b
into t4
from t1
join t2 on t1.a = t2.a and t1.c = t2.c
join t3 on t1.a = t3.a and t1.c = t3.c
where t3.e / t2.d < x

Хранение миллионов записей во временных таблицах плохо для производительности или хранения ...

...