2012-04-15 75 views
0
select SQL_NO_CACHE a.id, 
     date_format(a.data_cron,'%d/%m/%Y às %H:%i:%s') as data_pt,a.msgal, 
     a.status, 
     b.nome, 
     c.msg, 
     if((select count(*) from moips_temps where envio_id=a.id group by envio_id) > 0,1,0) as senvio, 
     if((select count(*) from moips_temps2 where envio_id=a.id group by envio_id) > 0,1,0) as senvio2 
    from moips_envios a, 
     moips_listas b, 
     moips_msgs c 
where a.lista_id = b.id 
    and a.msg_id = c.id 
    and a.moips_id = 44 
order by a.id desc 

时间:0.0146双左加入与MySQL的双重计数?

select SQL_NO_CACHE a.id,date_format(a.data_cron,'%d/%m/%Y às %H:%i:%s') as data_pt, a.msgal, a.status, b.nome, c.msg, 
    if(count(d.envio_id) > 0,1,0) as senvio, 
    if(count(e.envio_id) > 0,1,0) as senvio2 
from moips_envios a 
left join moips_temps d 
    on a.id=d.envio_id 
left join moips_temps2 e 
    on a.id=e.envio_id, moips_listas b, moips_msgs c 
where a.lista_id=b.id 
    and a.msg_id=c.id 
    and a.moips_id=25 
group by a.id 
order by a.id desc 

时间:0.1107

为什么与子查询数更快速?

+0

PLS格式的代码/查询 - 比较难读,我们要帮助的可能性就越小。 – 2012-04-15 03:32:26

+0

好吧,我会做的秒 – 2012-04-15 03:33:15

+0

没有1可以解释它对我? – 2012-04-15 04:06:01

回答

0

一个非常简单的改进,非标,仅在MySQL中,正在发生变化:

GROUP BY a.id 
ORDER BY a.id DESC 

到:

GROUP BY a.id DESC