SELECT SUM(a.situacao =2 OR a.situacao =0) AS cotacoes,
SUM(a.situacao =1) AS n_publicar,
SUM(a.inicio <= NOW() AND DATE_ADD(a.inicio, INTERVAL a.duracao HOUR) >= NOW() AND a.situacao =2) AS disputa,
SUM(a.inicio > NOW() AND a.situacao =2) AS agendados,
SUM(DATE_ADD(a.inicio, INTERVAL a.duracao HOUR) <= NOW() AND a.situacao =2 AND a.id_vencedor = -2) AS analise,
SUM(a.prazoi > NOW() AND a.situacao =2 AND a.id_vencedor >0) AS aguardando_execucao,
SUM(a.situacao =0) AS cancelados,
SUM(DATE_ADD(a.inicio, INTERVAL a.duracao HOUR) <= NOW() AND a.situacao =2 AND a.id_vencedor = -3) AS fracassados,
SUM(a.prazot < NOW() AND a.situacao =2 AND a.id_vencedor >0 AND (b.id_avaliacao IS NULL OR b.id_avaliacao = '')) AS avaliacao,
SUM(a.situacao =2 AND a.id_vencedor >0 AND a.prazot > NOW() AND a.prazoi <= NOW()) AS execucao
FROM leilao_pregoes a
LEFT JOIN leilao_avaliacao b ON a.id_pregao = b.id_pregao AND b.situacao = 1
INNER JOIN leilao_edital c ON a.id_edital = c.id_edital
WHERE c.id_comprador =1
我知道,这可以改善...优化这种缓慢的MySQL查询
从格式化开始,让你和其他人都能理解它。 –
这将是一个相当悬而未决的问题,因为您在一个声明中做了这么多事情,并且我们没有提供所有必需的信息,例如,数据类型,条目数量等。但是无论哪种方式,您可以通过重新格式化来解决问题。 – LordWilmore
为了提高查询时间,您可能应该添加**索引**,以便对该查询有用。我相信查询本身无法改进(或者在最糟糕的情况下,mysql应该为你做这件事),但就我所知,你并没有做出任何非常疯狂的事情。您在连接条件和where子句中使用的那些属性的索引。 – Jakumi