Я работаю с базой данных, которая имеет 5 таблиц с различным количеством наблюдений. Я включаю описание столбцов в каждой таблице ниже. Как видно из приведенного ниже, таблицы 1, 2 и 5 имеют общий SecurID, таблицы 3 и 4 имеют общий фактор, и, наконец, 3 и 5 имеют общие BID. Мне нужно выполнить анализ таблицы 1 против воздействия 2 и вернуться по дате. Для этого мне нужно сделать несколько слияний / объединений. Мне нужно объединить таблицы 3 и 4, а затем соединить их с таблицей 5 и, наконец, с 1 и 2. Я попробовал несколько соединений, например:
SELECT *
FROM Table3
INNER JOIN Table4 ON Table3.Factor = Table4.Factor
LEFT JOIN Table5 ON Table3.BID = Table5.BID
LEFT JOIN Table1 ON Table5.SecurID = Table1.SecurID
LEFT JOIN Table2 ON Table5.SecurID = Table2.SecurID
Моя проблема в том, что когда я запускаю этот запрос, я получаю сумасшедшее количество дополнительных наблюдений. Являются ли несколько функций объединения наиболее эффективным способом объединения всех этих таблиц? Я очень плохо знаком с SQL, но у каждой таблицы есть индекс, который, по моему мнению, является более быстрым способом ускорения процесса поиска данных по сравнению с SELECT.
- Таблица 1 (32 800 наблюдений): SecurID, HoldingDate, Weight
- Таблица 2 (2200 наблюдений): SecurID, HoldingDate, Weight
- Таблица 3 (Наблюдение 808400): BID, Фактор, Воздействие, Дата
- Таблица 4 (Наблюдение 8000): Коэффициент, Возвращение, FactorGrpName
- Таблица 5 (1600 Observ.): SecurID, SecurName, BID