目前我有13個表,每個表約有5-6列。在13個表中,4個表具有超過200,000(20萬個)行,其中具有varchar(1000)或更大值的5-6列。其餘10個表格大約有10000行,每行5到6列,每個都有varchar(1000)或更多值。每當我寫包含> = 3表的數據的查詢時,預期結果爲1000行和5列,查詢執行花費大量時間,大約(30分鐘-2小時)。如何加快涉及多個表的MySQL查詢的執行
我有大約12GB RAM和x86_64 x86_64 x86_64 GNU/Linux系統。
什麼是可能的方法來大幅減少查詢執行時間?
select a.d_id,
a.d_n,
a.t_id, a.act,
a.pm,
b.d_t,
b.d_d,
b.pm,
b.mec_of_act,
b.d_g,
b.d_c,
c.n_id,
c.s_name,
c.s_status,
c.s_p,
c.dis
from d_tar a,
d_char b,
ct c,
c_int d,
d_s e,
d_b f
where a.d_id=b.d_id
&& a.d_id=e.d_id
&& t_id='847'
&& a.d_id=f.d_id
&& d.n_id=c.n_id
&& (d.in_name=b.d_n
or d.in_name=e.snym
or d.in_name=f.b_name);
向我們顯示查詢,解釋計劃.. –
您的查詢需要優化。我正在研究3倍差的服務器,並從4個表中獲取數據,從中獲得10 + M個記錄,其餘每個記錄約爲0.5 + M。服務器忙時大約需要1-2秒。 –
我建議你學會使用顯式連接 - 'FROM d_tar a JOIN d_char b ON a.d_id = b.d_id JOIN ...'。它使得更容易看到發生了什麼。 – Dukeling