仮定するテーブルと結合 ID、A_ID、B_ID、C_ID、D_ID、量、年、main_colMySQLの複数が、複数のテーブル、クエリのパフォーマンス上の条件
(500行): ID、a_col1、
B(2000行)a_col2: ID、b_col1、b_col2、b_col3
C(500行): ID、c_col1、c_col2
D(1000行): ID、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
クエリのパフォーマンスを向上させるためにメインテーブルにインデックスを作成するための任意のアイデアを?
おかげ
更新: インデックスは、B、Cに追加され、列のDテーブルはメインテーブルに 私が試した複数の列のインデックスに表示(A_ID、B_ID、C_ID、D_ID 、main_col)は、a_id、b_id ...に個々のインデックスを追加するような最高のパフォーマンスを持ちますが、依然として十分に高速ではないため、クエリでは最大で7秒かかります。
あなたが本当にクエリを最適化するのに苦労していて、すべてを試したことがあるなら、あなたのスキーマを見たいかもしれません。パフォーマンスを改善するために、集約テーブルなどを非正規化/作成することは可能かもしれません。 – liquorvicar