안녕하세요. 현재 골프장관련 시세프로그램을 작업하고있는데요. 막히는 부분이 있어 고수님들께 문의 / 조언을 구하고자합니다. SELECT ws.region -- 지역코드 , ws.leisureCode -- 골프장명 , ws.gubun , ws.membership_name -- 회원권명 , ws.prev_date -- 전주날짜 , ws.prev_price -- 전주시세 , ws.today_date -- 금주날짜 , ws.today_price -- 금주시세 FROM sise ws LEFT JOIN membership wm ON ws.membership_name = wm.membership_name WHERE wm.info_open != 'N' AND wm.pcode <> '' AND ws.today_date between '20180905' and '20180912' ORDER BY membership_name ASC 위와같은 쿼리문이 있는데요. 위 기간안에서 전주시세 및 금주시세의 평균값을 구하고자하는데. 기본적인 지식인 while문을 통해 추출을 해봤지만 정상적으로 값이 나오긴 하는데 속도가 상당히 느리네요. WHILE문안에는 아래와 같은 쿼리문이 들어가있습니다. // 금주 SELECT SUM(ws.today_price) today_price,COUNT(ws.today_price) cnt FROM sise ws WHERE ws.membership_name = 'A골프장' AND ws.today_date between '20180905' and '20180912' // 전주 SELECT SUM(ws.today_price) today_price,COUNT(ws.today_price) cnt FROM sise ws WHERE ws.membership_name = 'A골프장' AND ws.today_date between '20180822' and '20180829' 속도개선을 위한 쿼리문을 조정할수있는 방법이 있는지 조언부탁드립니다.
SELECT ws.region -- 지역코드 , ws.leisureCode -- 골프장명 , ws.gubun , ws.membership_name -- 회원권명 , ws.prev_date -- 전주날짜 , ws.prev_price -- 전주시세 , ws.today_date -- 금주날짜 , ws.today_price -- 금주시세 , ws_a.today_price --금주합계 , ws_a.cnt --금주수량 , ws_b.today_price --전주합계 , ws_b.cnt --전주수량 FROM sise ws LEFT JOIN membership wm ON ws.membership_name = wm.membership_name LEFT JOIN (SELECT ws.membership_name, SUM(ws.today_price) today_price,COUNT(ws.today_price) cnt FROM sise ws WHERE ws.today_date between '20180905' and '20180912' GROUP BY ws.membership_name) ws_a ON ws.membership_name = ws_a.membership_name LEFT JOIN (SELECT ws.membership_name, SUM(ws.today_price) today_price,COUNT(ws.today_price) cnt FROM sise ws WHERE ws.today_date between '20180822' and '20180829' GROUP BY ws.membership_name) ws_b ON ws.membership_name = ws_b.membership_name WHERE wm.info_open != 'N' AND wm.pcode <> '' AND ws.today_date between '20180905' and '20180912' ORDER BY membership_name ASC ; -- 지문에는 평균이라고 하시고 샘플쿼리는 합계와 수량이네요. -- 이부분은 적당히 수정해서 사용하시면 될 듯 합니다.