繁体   English   中英

优化mysql查询以选择值

[英]Optimize mysql query to select the values

我有一个具有以下列名称的表:audit_name,audit_choice和“ slno”作为自动增量主键,并且不使用输出数据。

可以重复使用audit_name,并且audit_choice值限制为某些值,例如“通过”,“失败”。

我的查询预期输出是,获取每个“ Audit_name”的“通过”计数和“失败”计数。

这是我尝试的查询,但是大约需要3-4分钟才能执行约1,000条记录。

SELECT audit_name,
  (SELECT COUNT(*) AS Passed FROM audit AS p1
     WHERE p1.audit_name=p2.audit_name AND p1.audit_choice="Passed") AS Passed,
  (SELECT COUNT(*) AS Failed FROM audit AS p3
     WHERE p3.audit_name=p2.audit_name AND p2.audit_choice="Failed") AS Failed
  FROM audit AS p2
  GROUP BY audit_name

请建议我如何优化查询。

SELECT  audit_name,
        SUM(audit_choice = 'Passed') AS passed,
        SUM(audit_choice = 'Failed') AS failed
FROM    audit
GROUP BY
        audit_name

我还建议将诸如“ Passed”和“ Failed”之类的字符串值移出表,而使用整数标识符-它们的比较比字符串快得多。

    SELECT  audit_name,
         SUM(if(audit_choice = 'Passed',1,0)) AS passed,
         SUM(if(audit_choice = 'Failed',1,0)) AS failed
    FROM    audit
    GROUP BY
    audit_name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM