MySQL查询变慢

时间:2013-08-05 09:36:54

标签: mysql performance group-by

我有以下查询,它应该提供近50行作为输出。它是从记录少于10K的表中搜索的。运行查询大约需要5分钟

select a.dak_dept,b.dept_name,
  (
    select count(dak_stat) 
      from dak_dept_mast 
        where dak_dept = a.dak_dept and dak_stat='N'
  ) as new,
  (
    select count(dak_stat)
      from dak_dept_mast 
        where dak_dept = a.dak_dept and dak_stat='O'
  ) as open,
  (
    select count(dak_stat)
      from dak_dept_mast
        where dak_dept = a.dak_dept and dak_stat='C'
  ) as closed
  from dak_dept_mast a,tapal_dept_mast b
  where a.dak_dept = b.dept_code
  group by a.dak_dept

表dak_dept_mast将dak_dept和dak_no作为组合主键 表tapal_dept_mast将dept_code作为主键。

有人可以提出一些建议。我正在使用XAMPP运行mysql 5.1

提前谢谢

Sujeesh

1 个答案:

答案 0 :(得分:1)

您可以尝试替代

SELECT a.dak_dept,
       b.dept_name,
       SUM(CASE WHEN a.dak_stat='N' THEN 1 ELSE 0 END) new,
       SUM(CASE WHEN a.dak_stat='O' THEN 1 ELSE 0 END) open,
       SUM(CASE WHEN a.dak_stat='C' THEN 1 ELSE 0 END) closed
  FROM dak_dept_mast a JOIN tapal_dept_mast b
    ON a.dak_dept = b.dept_code
 GROUP BY a.dak_dept
相关问题