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
...私は可能な場合<code>COUNT</code>がより速くなるかどうかを疑問に思う私はこれを向上させることができることを知っているこの遅いmysqlのクエリ
あなたと他の人がそれを理解できるように、フォーマットすることから始めます。 –
これは非常に未解決の問題です。なぜなら、あなたは1つの声明でそれほど多くのことをしており、必要な情報をすべて持っているわけではないからです。データタイプ、エントリ数などが含まれていますが、どちらの方法でも問題が解決できるのはいくつかの再フォーマットです。 – LordWilmore
クエリ時間を改善するには、おそらく**インデックス**を追加する必要があります。私はクエリ自体を改善することはできません(または、最悪の場合にはmysqlがそれを行うべきです)が、私が知る限り、何か大きなことはしていません。結合条件とwhere句で使用する属性のインデックス。 – Jakumi