안녕하세요.
현재 부동산관련 프로그램작업을 진행하고 있는데요.
조인관련해서 막히는 부분이 있어 도움을 얻고자 합니다.
SELECT wm.id
, wm.com_name
, wm.com_ceo
, wm.tphone
, wm.hphone
, wm.com_address1
, wm.com_address2
, wm.com_address3
, wm.com_address4
, wm.photo
FROM member wm
LEFT JOIN order wo
ON wm.id = wo.send_id
LEFT JOIN adorder
ON wm.id = wa.memid
AND wo.orderid = wa.orderid
WHERE (wo.status = 'OY' or wo.status = 'RD')
AND wo.orderid = '190517125024282'
AND (wo.fp_pay_sdate <= '2019-08-06 08:24:08' AND wo.fp_pay_ldate >= '2019-08-06 08:24:08' or wa.fp_pay_sdate <= '2019-08-06 08:24:08' AND wa.fp_pay_ldate >= '2019-08-06 08:24:08')
GROUP BY wm.id
ORDER BY rand()
LIMIT 4
member : 회원테이블
order : 주문테이블
adorder : 정기결제테이블
위 3가지의 테이블이 있는데요.
프로그램 프로세스내용은
부동산중개업자가 지역을 선택해서 결제를 하게되면 해당지역에 있는 모든 매물을 중개업자가 볼수있으며
해당매물상세페이지 해당중개업자가 랜덤으로 노출되는 프로그램입니다.
현재 adorder같은경우는 18667020의 row가 있습니다.
말그대로 정기결제이다보니 자동으로 결제가 이루어지면서 데이터가 계속 쌓이는데요.
쿼리를 잘못구성해서 그런것인지. 로딩속도가 너무나도 느린데요.
고수님들의 조언좀 구하고자 합니다.
질문이 부족한 부분이 많네요 ㅡㅡ
SELECT wm.id , wm.com_name , wm.com_ceo , wm.tphone , wm.hphone , wm.com_address1 , wm.com_address2 , wm.com_address3 , wm.com_address4 , wm.photo FROM (SELECT wo.send_id AS id FROM order wo WHERE wo.status IN ('OY', 'RD') AND wo.orderid = '190517125024282' AND '2019-08-06 08:24:08' BETWEEN wo.fp_pay_sdate AND wo.fp_pay_ldate UNION SELECT wa.memid FROM adorder wa WHERE '2019-08-06 08:24:08' BETWEEN wa.fp_pay_sdate AND wa.fp_pay_ldate ORDER BY RAND() LIMIT 4 ) a INNER JOIN member wm ON a.id = wm.id ;