안녕하세요
영카트 특성상 주문이 들어와서 품절이 되었더라도 배송으로 처리하지 않는 이상 리스트상에서는 품절로 상품이 보이게 됩니다.
실제수량(get_it_stock_qty()) 기준이 아닌 창고수량(it_stock_qty)이 기준이 되기 때문인데요
이 기본 로직때문에 첨부터 정말 골치가 아픕니다.. 문의글보니 저뿐만이 아니라는 생각이 듭니다
이 기본로직때문에 현재는 리스트에 출력할 상품에 대한 sql쿼리시 아래처럼 실제수량을 확인하여 품절이 아닐경우에만 상품을 노출시키고 있습니다.
from `$g4[yc4_item_table]` a
where
and a.it_stock_qty > ifnull((select sum(ct_qty) from `$g4[yc4_cart_table]` where it_id = a.it_id and ct_status in ('주문','준비')),0)
그런데 위처럼 하니 사용자가 증가할수록 부하가 누적되어 버벅이는 현상이 발생합니다.
(단순히 and a.it_stock_qty > 0로 하면 서버부하가 20-30%는 줄어듦을 확인하였습니다.)
sir에서 뒤져보니
http://sir.co.kr/bbs/board.php?bo_table=yc4_qa&wr_id=35105 글이 존재합니다만
이또한 get_it_stock_qty() 함수를 사용해야하는데 이함수내부를 살펴보니 현재 쓰는코드보다 더 부하가 가는 sql쿼리문을 사용하고 있습니다.
sql쿼리시 저희가 사용하고 있는 and a.it_stock_qty > ifnull((select sum(ct_qty) from `$g4[yc4_cart_table]` where it_id = a.it_id and ct_status in ('주문','준비')),0) 보다 품절상품은 리스트에 보이지 않게 하면서 부하를 줄일수 있는 쿼리나 기타 팁이 없을까요..
댓글 1개
게시글 목록
| 번호 | 제목 |
|---|---|
| 55821 | |
| 55812 | |
| 55805 | |
| 55798 | |
| 55796 | |
| 55786 | |
| 55784 | |
| 55777 | |
| 55776 | |
| 55769 | |
| 55762 | |
| 55756 | |
| 55754 | |
| 55749 | |
| 55737 | |
| 55735 | |
| 55728 | |
| 55727 | |
| 55725 | |
| 55719 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기