select a.product_id , a.prm -- 상품명 , a.price -- 가격 , a.asnum . . . from mk_product a, mk_category b where a.product_id != ' and wc.product_id = a.product_id order by a.sort desc, a.product_id desc 안녕하세요. 기존에 만들어져있던 사이트에 조인 및 속도등의 문제가 있어 문의를 드리고자합니다. 테이블은 상품테이블(mk_product)과 카테고리 테이블(mk_category)로 되어있습니다. 현재 상품이 54만건정도 업로드되어있네요. 속도가 너무나도 늦어져 확인해보니. 상품리스트가 while문을 통해서 뿌려지고있는데요. 그 while문안에 다른테이블의 상품as정보(mk_product_as)를 가져오고있네요. mk_product_as테이블의 idx값과 해당상품에 등록된 as접수건등을 카운팅해서 가져옵니다. 여쭤보고싶은건 정상적으로 리스트가 출력이 되면서 mk_product, mk_category에 mk_product_as를 조인해서 원하는 정보를 가져올수있는지 문의를 드립니다. 조언 부탁드립니다 ㅡㅡ 질문이 좀 횡설수설하네요.
-- 그룹바이 후 조인 SELECT a.product_id , a.prm , a.price , a.asnum , ... , c.as_cnt , c.as_idx FROM mk_product a INNER JOIN mk_category b ON a.product_id = b.product_id LEFT OUTER JOIN (SELECT asnumber, assubject , COUNT(*) as_cnt , MIN(idx) as_idx FROM mk_product_as GROUP BY asnumber, assubject ) c ON a.asnum = c.asnum AND a.assubject = c.assubject WHERE a.product_id != '' ORDER BY a.sort DESC, a.product_id DESC ;
-- 스칼라서브쿼리 -- SELECT a.product_id , a.prm , a.price , a.asnum , ... , (SELECT COUNT(*) as_cnt FROM mk_product_as c WHERE c.asnum = a.asnum AND c.assubject = a.assubject ) as_cnt , (SELECT MIN(idx) as_idx FROM mk_product_as c WHERE c.asnum = a.asnum AND c.assubject = a.assubject ) as_idx -- idx 항목이 꼭 필요한건지 의문? FROM mk_product a INNER JOIN mk_category b ON a.product_id = b.product_id WHERE a.product_id != '' ORDER BY a.sort DESC, a.product_id DESC ; -- 조인 후 그룹바이 -- SELECT a.product_id , a.prm , a.price , a.asnum , ... , COUNT(c.idx) as_cnt , MIN(c.idx) as_idx FROM mk_product a INNER JOIN mk_category b ON a.product_id = b.product_id LEFT OUTER JOIN mk_product_as c ON a.asnum = c.asnum AND a.assubject = c.assubject WHERE a.product_id != '' GROUP BY a.product_id , a.prm , a.price , a.asnum , ... ORDER BY a.sort DESC, a.product_id DESC ;