도와주세요!! 개발자님들! > 토크

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!

토크

개발과 관련된 어떤 얘기도 괜찮습니다.

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

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

본문

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

질문이 있을때 마다 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'].":%'

 

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

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

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

 

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

 

그리고 감사합니다.^^

추천
0
비추천
0

댓글 6개

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,600
토크 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT