如何更快地执行此查询?

时间:2015-03-24 15:19:34

标签: mysql

这是我的疑问:

create table vi_all as 
   select 
     d.primaryid, d.age, d.gndr_cod, d.wt, d.wt_cod, d.reporter_country, 
     dr.primaryiddrug, dr.role_cod, dr.drug_name, 
     r.primaryidreac, r.pt, 
     o.primaryidoutc, o.outc_cod, 
     i.primaryidindi, i.indi_pt 
   FROM demo d,
        drug dr,
        reac r,
        outc o,
        indi i;

每个表包含至少80K记录和20多个字段,因此很难在多个表上执行select语句;我只想要每个表中有4个或3个字段,所以我想到了这一点,但上面的查询花了5个多小时但仍然没有给出任何结果。

1 个答案:

答案 0 :(得分:0)

我的水晶球说你需要这样的东西:

create table vi_all as 
   select 
     d.primaryid, d.age, d.gndr_cod, d.wt, d.wt_cod, d.reporter_country, 
     dr.primaryiddrug, dr.role_cod, dr.drug_name, 
     r.primaryidreac, r.pt, 
     o.primaryidoutc, o.outc_cod, 
     i.primaryidindi, i.indi_pt 
   FROM demo d
   LEFT JOIN drug dr ON d.drug=dr.id
   LEFT JOIN reac r ON d.reac=r.id
   LEFT JOIN outc o ON d.outc=o.id
   LEFT JOIN indi i ON d.indi=i.id;

据我所知,您的查询是从所有表中选择所有结果但不以任何方式关联它们,因此,您可以在新创建的表中获取重复数据。此外,如果你有一些好的外键来关联这些表,性能会相当好。