предположим, таблицы:
main (1M строк): id, a_id, b_id, c_id, d_id, суммы, год, main_col
a (500 строк): id, a_col1, a_col2
b (2000 строк): идентификатор, b_col1, b_col2, b_col3
c (500 строк): идентификатор, c_col1, c_col2
d (1000 строк): идентификатор,d_col1, d_col2
И у нас есть запрос вроде:
select sum(amounts), main_col
join a on a.id = main.a_id
join b on b.id = main.b_id
join c on c.id = main.c_id
join d on d.id = main.d_id
where a.a_col1 in (...)
and a.a_col2 in (..)
and b.b_col1 in (...)
and b.b_col2 in (...)
and b.b_col3 in (..)
and c.c_col1 in (..)
and c.c_col2 in (..)
and d.d_col1 in (..)
and d.d_col2 in (..)
and year = 2011
group by main.main_col
есть идеи, кто создать индекс для основной таблицы, чтобы повысить производительность запроса?
спасибо
Обновление: индексы добавляются в таблицы a, b, c, d для столбцов, которые отображаются там, где я пробовал несколько индексов столбцов в основной таблице (a_id, b_id, c_id, d_id, main_col), которые имеют лучшую производительностьчем другие, такие как добавление отдельных индексов в a_id, b_id ..., но это все еще недостаточно быстро для требования, для запроса потребуется 7 секунд для выполнения в максимальной ситуации