미치겠네요.. 질문할 곳이 여기 밖에 없어요... 정보
미치겠네요.. 질문할 곳이 여기 밖에 없어요...
본문
$que_count="SELECT(SELECT COUNT(DISTINCT b.rq_no) FROM corp_call a left join corp_call_comment b on b.rq_no = a.no WHERE $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput $strfirstinput_1 $strsecondinput_1".$que_type." and a.state='수술완료')cnt_1,";
$que_count=$que_count."(SELECT COUNT(DISTINCT b.rq_no) FROM corp_call a left join corp_call_comment b on b.rq_no = a.no WHERE $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput $strfirstinput_1 $strsecondinput_1 ".$que_type." and a.state='수술예정')cnt_2,";
$que_count=$que_count."(SELECT COUNT(DISTINCT b.rq_no) FROM corp_call a left join corp_call_comment b on b.rq_no = a.no WHERE $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput $strfirstinput_1 $strsecondinput_1".$que_type." and a.state='수술취소')cnt_3,";
$que_count=$que_count."(SELECT COUNT(DISTINCT b.rq_no) FROM corp_call a left join corp_call_comment b on b.rq_no = a.no WHERE $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput $strfirstinput_1 $strsecondinput_1".$que_type." and a.state='내원상담')cnt_4,";
$que_count=$que_count."(SELECT COUNT(DISTINCT b.rq_no) FROM corp_call a left join corp_call_comment b on b.rq_no = a.no WHERE $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput $strfirstinput_1 $strsecondinput_1".$que_type." and a.state='내원예약')cnt_5,";
$que_count=$que_count."(SELECT COUNT(DISTINCT b.rq_no) FROM corp_call a left join corp_call_comment b on b.rq_no = a.no WHERE $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput $strfirstinput_1 $strsecondinput_1".$que_type."and a.state='내원취소')cnt_6,";
$que_count=$que_count."(SELECT COUNT(DISTINCT b.rq_no) FROM corp_call a left join corp_call_comment b on b.rq_no = a.no WHERE $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput $strfirstinput_1 $strsecondinput_1".$que_type." and a.state='진행중')cnt_7,";
$que_count=$que_count."(SELECT COUNT(DISTINCT b.rq_no) FROM corp_call a left join corp_call_comment b on b.rq_no = a.no WHERE $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput $strfirstinput_1 $strsecondinput_1 ".$que_type." and a.state='재컨택')cnt_8,";
$que_count=$que_count."(SELECT COUNT(DISTINCT b.rq_no) FROM corp_call a left join corp_call_comment b on b.rq_no = a.no WHERE $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput $strfirstinput_1 $strsecondinput_1".$que_type." and state='보류')cnt_9,";
/*$que_count=$que_count."(SELECT COUNT(*) FROM corp_call WHERE $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput ".$que_type." and state='부재중')cnt_10,";*/
$que_count=$que_count."(SELECT COUNT(DISTINCT b.rq_no) FROM corp_call a left join corp_call_comment b on b.rq_no = a.no WHERE $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput $strfirstinput_1 $strsecondinput_1".$que_type." and a.state='부재중1')cnt_10_1,";
$que_count=$que_count."(SELECT COUNT(DISTINCT b.rq_no) FROM corp_call a left join corp_call_comment b on b.rq_no = a.no WHERE $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput $strfirstinput_1 $strsecondinput_1".$que_type." and a.state='부재중2')cnt_10_2,";
$que_count=$que_count."(SELECT COUNT(DISTINCT b.rq_no) FROM corp_call a left join corp_call_comment b on b.rq_no = a.no WHERE $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput $strfirstinput_1 $strsecondinput_1".$que_type." and a.state='부재중3')cnt_10_3,";
$que_count=$que_count."(SELECT COUNT(DISTINCT b.rq_no) FROM corp_call a left join corp_call_comment b on b.rq_no = a.no WHERE $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput $strfirstinput_1 $strsecondinput_1 ".$que_type." and a.state='부재중4_종료')cnt_10_4,";
$que_count=$que_count."(SELECT COUNT(DISTINCT b.rq_no) FROM corp_call a left join corp_call_comment b on b.rq_no = a.no WHERE $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput $strfirstinput_1 $strsecondinput_1 ".$que_type." and (a.state=' ' or a.state=''))cnt_11_1,";
$que_count=$que_count."(SELECT COUNT(DISTINCT b.rq_no) FROM corp_call a left join corp_call_comment b on b.rq_no = a.no WHERE $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput $strfirstinput_1 $strsecondinput_1".$que_type." and a.state='종료')cnt_11";
$que_count = $que_count." FROM corp_call";
//echo $que_count."<br>";
$result_count = mysql_query($que_count);
$row_count = mysql_fetch_array($result_count);
$cnt_1 = $row_count[cnt_1];
$cnt_2 = $row_count[cnt_2];
$cnt_3 = $row_count[cnt_3];
$cnt_4 = $row_count[cnt_4];
$cnt_5 = $row_count[cnt_5];
$cnt_6 = $row_count[cnt_6];
$cnt_7 = $row_count[cnt_7];
$cnt_8 = $row_count[cnt_8];
$cnt_9 = $row_count[cnt_9];
$cnt_10_1 = $row_count[cnt_10_1];
$cnt_10_2 = $row_count[cnt_10_2];
$cnt_10_3 = $row_count[cnt_10_3];
$cnt_10_4 = $row_count[cnt_10_4];
$cnt_11 = $row_count[cnt_11];
$cnt_11_1 = $row_count[cnt_11_1];
$cnt_oknum = $cnt_1+$cnt_2+$cnt_3+$cnt_4+$cnt_5+$cnt_6+$cnt_7+$cnt_8+$cnt_9+$cnt_10_1+$cnt_10_2+$cnt_10_3;
$cnt_nonum = $cnt_10_4 +$cnt_11+$cnt_11_1;
$cnt_total = $cnt_1+$cnt_2+$cnt_3+$cnt_4+$cnt_5+$cnt_6+$cnt_7+$cnt_8+$cnt_9 + $cnt_10_1 + $cnt_10_2 + $cnt_10_3 + $cnt_10_4 +$cnt_11+$cnt_11_1;
이거를 전에 개발자가 짜 놓은 거 같은데....
속도가 너무 느립니다.
corp_call 에는 5만개의 데이타
corp_call_comment 에는 15,000개의 데이타
두개의 데이타를 각각 합계를 내는 데요...
속도가 거의 2분 가까이 소요 됩니다...
이걸....
$que_count=" select
a.com_id,
sum(case when a.state in ('수술완료','수술예정','수술취소','내원상담','내원예약','내원취소','진행중','재컨택','보류','부재중1','부재중2','부재중3','부재중4_종료','종료','철회',' ','') then 1 else 0 end ) as 'totalDB',
SUM(CASE WHEN a.state = '수술완료' THEN 1 ELSE 0 END) AS 'endstamenDB',
SUM(CASE WHEN a.state = '수술예정' THEN 1 ELSE 0 END) AS 'prestamenDB',
SUM(CASE WHEN a.state = '수술취소' THEN 1 ELSE 0 END) AS 'cancelstamenDB',
SUM(CASE WHEN a.state = '내원상담' THEN 1 ELSE 0 END) AS 'consultingDB',
SUM(CASE WHEN a.state = '내원예약' THEN 1 ELSE 0 END) AS 'reservDB',
SUM(CASE WHEN a.state = '내원취소' THEN 1 ELSE 0 END) AS 'reservCancelDB',
SUM(CASE WHEN a.state = '진행중' THEN 1 ELSE 0 END) AS 'processDB',
SUM(CASE WHEN a.state = '재컨택' THEN 1 ELSE 0 END) AS 'recontactDB',
SUM(CASE WHEN a.state = '보류' THEN 1 ELSE 0 END) AS 'suspendDB',
SUM(CASE WHEN a.state in ('부재중1','부재중2','부재중3') THEN 1 ELSE 0 END) AS 'AbsenceDB',
SUM(CASE WHEN a.state = '부재중1' THEN 1 ELSE 0 END) AS 'AbsenceDB1',
SUM(CASE WHEN a.state = '부재중2' THEN 1 ELSE 0 END) AS 'AbsenceDB2',
SUM(CASE WHEN a.state = '부재중3' THEN 1 ELSE 0 END) AS 'AbsenceDB3',
SUM(CASE WHEN a.state = '부재중4_종료' THEN 1 ELSE 0 END) AS 'AbsenceDB4',
SUM(CASE WHEN a.state = '철회' THEN 1 ELSE 0 END) AS 'cancelDB',
SUM(CASE WHEN a.state in ('종료') THEN 1 ELSE 0 END) AS 'endDB',
sum(case when a.state in ('수술완료','수술예정','수술취소','내원상담','내원예약','내원취소','진행중','재컨택','보류','부재중1','부재중2','부재중3') then 1 else 0 end ) as 'usualDB',
sum(case when a.state in ('부재중4_종료','종료',' ','') then 1 else 0 end ) as 'unusualDB',
SUM(CASE WHEN a.state in (' ','') THEN 1 ELSE 0 END) AS 'nostatus'
FROM corp_call a left outer join (select * from corp_call_comment group by rq_no) b
on b.rq_no = a.no
where $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput $strfirstinput_1 $strsecondinput_1 ".$que_type."
And a.com_id='$corp_id'
";
$result_count = mysql_query($que_count);
$row_count = mysql_fetch_array($result_count);
이렇게 바꾸려니.... 속도는 빠른데.... 위의 값이랑 다르게 나오는게 문제네요...
물론, 어느게 더 정확한 데이타 인지는.... 모른다는 것도 문제구요...
제발 도와 주세요 ㅠ.ㅜ
0
댓글 4개

SELECT a.state, COUNT(DISTINCT b.rq_no) FROM corp_call a left join corp_call_comment b on b.rq_no = a.no WHERE $strwhere $where1 $where3 $where4 $where7 $where8 $strfirstinput $strsecondinput $strfirstinput_1 $strsecondinput_1 $que_type GROUP BY a.state
일단 count 값을 얻은 후, 조건별 합계는 php에서 하고요..

한줄기 빗 방울 같은 방법이라도 감사 합니다.

보는 페이지에서 통계보기 버튼 만들어서 보여 주시는 방법이 제일 낳은것 같습니다.
튜닝을 하게 되면 배보다 배꼽이 더 커지니까요

하지만, 서버 생 초보이기에..... 힘들 듯 하네요... 에휴...