도와주세요!! 개발자님들! > 고민상담

고민상담

같은 일하시는 분들끼리 궁금한것도 물어보시고, 재미난 얘기 나누세요.

도와주세요!! 개발자님들! 정보

도와주세요!! 개발자님들!

본문

안녕하세요. 오랜만에 접속하네요.

질문이 있을때 마다 SIR를 찾게되네요. 전문가분들이 너무 많으셔서요.

 

메인 검색

select substr(hv_datetime, 12, 2) as Times from hit_visit group by Times 

하위 검색

select count(*) as Count from hit_visit where (1) and hv_set = 'Visit' and hv_datetime like '% ".$Row[0]['Times'].":%'

select count(distinct(hv_ip)) as Count from hit_visit where (1) and hv_set = 'Visit' and hv_datetime like '% ".$Row[0]['Times'].":%'

select count(*) as Count from hit_visit where (1) and hv_set = 'Purchase' and hv_datetime like '% ".$Row[0]['Times'].":%'

select count(*) as Count from hit_visit where (1) and hv_set = 'Put' and hv_datetime like '% ".$Row[0]['Times'].":%'

select count(*) as Count from hit_visit where (1) and hv_set = 'Attention' and hv_datetime like '% ".$Row[0]['Times'].":%'

 

이런 방식으로 불러오고 있습니다.

그런데 이용자가 많아지다보니 속도부분에서 너무 오래 걸리게 되더라구요..

혹시 한번에 처리 할 수 있는 방법은 없을까요?

 

간단한 예제 부탁드립니다.

 

그리고 감사합니다.^^

댓글 전체

select
(select count(*) as Count from hit_visit where (1) and hv_set = 'Visit' and hv_datetime like '% ".$Row[0]['Times'].":%' ) as hit_visit1
(select count(distinct(hv_ip)) as Count from hit_visit where (1) and hv_set = 'Visit' and hv_datetime like '% ".$Row[0]['Times'].":%' ) as hit_visit2
(select count(*) as Count from hit_visit where (1) and hv_set = 'Purchase' and hv_datetime like '% ".$Row[0]['Times'].":%' ) as hit_visit3
(select count(*) as Count from hit_visit where (1) and hv_set = 'Put' and hv_datetime like '% ".$Row[0]['Times'].":%' ) as hit_visit1
(select count(*) as Count from hit_visit where (1) and hv_set = 'Attention' and hv_datetime like '% ".$Row[0]['Times'].":%' ) as hit_visit4

이런식으로 해서

hit_visit1 ~ hit_visit4 까지 한번 에 가지오 올수 있습니다.
그리고 데이터 양이 많아서 속도가 느리면요..조건걸럼에다가 index를 걸어주시면 속도가 훨씬 빨라집니다.
답변 감사합니다.
그런데 ㅠㅠ 실행이 안되네요.. ㅠㅠ찡

$Select = "
select
(select count(*) as Count from hit_visit where (1) and hv_set = 'Visit' and hv_datetime like '% 05:%' ) as hit_visit1
(select count(distinct(hv_ip)) as Count from hit_visit where (1) and hv_set = 'Visit' and hv_datetime like '% 05:%' ) as hit_visit2
(select count(*) as Count from hit_visit where (1) and hv_set = 'Purchase' and hv_datetime like '% 05:%' ) as hit_visit3
(select count(*) as Count from hit_visit where (1) and hv_set = 'Put' and hv_datetime like '% 05:%' ) as hit_visit1
(select count(*) as Count from hit_visit where (1) and hv_set = 'Attention' and hv_datetime like '% 05:%' ) as hit_visit4
";
$Query = sql_query($Select);
while($Row = sql_fetch_array($Query)){
 print_r($Row);
 echo "<br/>";
}
like 사용시에 times를 계속 조회하셔야 하는 사항이면 빨리질수 없습니다.
윗 분님의 설명대로
index를 걸어도 도움은 됩니다만
약효는 금방 떨어질듯 합니다.

참고로 count(*) 보다 특정 컬럼 한개 예를들어 select count(no) 와 같이 처리하시는게 속도에 도움이됩니다.
count(*) 이게 더빠르지 않나요? 기억이 가물가물하지만 이게 count(*) 더빠르다는 실험했다는 분이 있으신데 아 찾아보니 여기 결론이 있네요 http://nampoong.tistory.com/96
전체 3,569
고민상담 내용 검색

회원로그인

진행중인 이벤트

  1. 몽트리 테마 무료제공 경품몽트리테마 무료제공 추첨3명 발표17.07.02 (목)
  2. 레오파드 기계식키보드 경품레오파트 기계식키보드 추첨1명 발표17.06.29 (목)

(주)에스아이알소프트 (06253) 서울 강남구 강남대로 310, 1312호 (역삼동, 유니온센터) 대표메일:admin@sir.kr
사업자등록번호:217-81-36347 대표:홍석명 통신판매업신고번호:2014-서울강남-02098호 개인정보보호책임자:이총

© SIRSOFT