안녕하세요. 이제 개발을 시작을 초보신입개발자입니다. 지금 골프장관련 프로그램을 진행하고있는데요. 결과물이 노출되도록 처리를 했는데 속도면서 늦은감이 있어 질문을 드릴까합니다. 골프장보면 회원권이 있는데요, 해당골프장별 회원권은 여러개가 있을수 있습니다. 이에따라 회원권의 전일, 금일시세를 노출시키려고 하는데요. 원하는 속도가 나오지 않고있네요 ㅡㅡ 추가적으로 인덱스는 region, leisureCode 2로 잡아놨습니다. 현재 7천건정도가 디비에 쌓여있는데요. 그 수는 계속해서 늘어납니다. 고수분들의 조언좀 바랍니다. 제가 만든쿼리는 아래와 같은데 잘못된 부분에 대한 조언을 구하고자 합니다. SELECT ws.region -- 지역코드 , ws.leisureCode -- 골프장코드 , ws.membership_name -- 회원권이름 , MAX(ws.seldate) as seldate -- 회원권의 최근시세날짜 , ws.prev_date -- 회원권 전일시세날짜 , ws.prev_price -- 회원권 전일시세금액 , ws.today_date -- 회원권 금일시세날짜 , ws.today_price -- 회원권 금일시세금액 , wm.idx , wm.prdcode -- 회원권 등록코드 FROM wiz_membership wm -- 회원권 테이블 LEFT JOIN wiz_sise as ws -- 시세테이블 ON wm.membership_name = ws.membership_name and wm.leisureCode = ws.leisureCode and wm.region = ws.region WHERE wm.prdcode != '' and ws.membership_name != '' and ws.leisureCode != '' GROUP BY ws.leisureCode, ws.membership_name ORDER BY ws.region asc , ws.membership_name asc
mySQL 에서만 허용되는 표준을 따르지 않는 그룹바이 구문을 사용하셨네요.
SELECT ws.region -- 지역코드 , ws.leisureCode -- 골프장코드 , ws.membership_name -- 회원권이름 , ws.seldate -- 회원권의 최근시세날짜 , ws.prev_date -- 회원권 전일시세날짜 , ws.prev_price -- 회원권 전일시세금액 , ws.today_date -- 회원권 금일시세날짜 , ws.today_price -- 회원권 금일시세금액 , wm.idx , wm.prdcode -- 회원권 등록코드 FROM (SELECT leisureCode, membership_name , MAX(seldate) seldate FROM wiz_sise WHERE leisureCode != '' AND membership_name != '' GROUP BY leisureCode, membership_name ) a INNER JOIN wiz_sise ws ON a.leisureCode = ws.leisureCode AND a.membership_name = ws.membership_name AND a.seldate = ws.seldate INNER JOIN wiz_membership wm ON wm.membership_name = ws.membership_name AND wm.leisureCode = ws.leisureCode AND wm.region = ws.region WHERE wm.prdcode != '' ;