假設表條件加入 ID,A_ID,B_ID,C_ID,D_ID,金額,一年,main_colmysql的多對多表查詢性能
一個(500行): ID,a_col1,a_col2
b(2000行): 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
任何想法誰對主表創建索引來提高查詢性能?
感謝
更新: 指標加入到A,B,C,對於列d表中的主表,其中 我試過多列索引顯示(A_ID,B_ID,C_ID,D_ID ,main_col),其性能最佳,比如在a_id,b_id ...上添加單獨索引,但對於需求來說仍然不夠快,查詢需要7秒鐘才能運行以適應最大情況
如果您真的在努力優化查詢並嘗試了一切,那麼您可能需要查看您的模式。有可能去規範/創建聚合表等來提高性能。 – liquorvicar 2012-03-28 08:23:48