2

出力としてほぼ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を実行しています

事前にThx

スジーシュ

4

1 に答える 1

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
于 2013-08-05T09:51:14.347 に答える