目前我有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