Search

5-2-7. 복합 인덱스 설계하기

-- [SQL-5-2-7-1-a] SELECT t1.* FROM startdbpg.tr_ord_big t1 WHERE t1.prep_cmp_dtm >= '2023-04-01'::date AND t1.prep_cmp_dtm < '2023-05-01'::date AND t1.shop_id = 'S100' AND t1.mbr_id = 'M70309' ORDER BY t1.ord_no DESC;
SQL
복사
-- [SQL-5-2-7-2-a]: [SQL-5-2-7-1-a]를 카운트 처리 SELECT COUNT(*) cnt FROM startdbpg.tr_ord_big t1 WHERE t1.prep_cmp_dtm >= '2023-04-01'::date AND t1.prep_cmp_dtm < '2023-05-01'::date AND t1.shop_id = 'S100' AND t1.mbr_id = 'M70309';
SQL
복사
-- [SQL-5-2-7-2-b] : [SQL-5-2-7-1-a]의 조건을 두 개씩 짝지어서 카운트 처리 -- prep_cmp_dtm + shop_id: 50940 SELECT COUNT(*) cnt FROM startdbpg.tr_ord_big t1 WHERE t1.prep_cmp_dtm >= '2023-04-01'::date AND t1.prep_cmp_dtm < '2023-05-01'::date AND t1.shop_id = 'S100'; -- prep_cmp_dtm + mbr_id: 27 SELECT COUNT(*) cnt FROM startdbpg.tr_ord_big t1 WHERE t1.prep_cmp_dtm >= '2023-04-01'::date AND t1.prep_cmp_dtm < '2023-05-01'::date AND t1.mbr_id = 'M70309'; -- shop_id + mbr_id: 218 SELECT COUNT(*) cnt FROM startdbpg.tr_ord_big t1 WHERE t1.shop_id = 'S100' AND t1.mbr_id = 'M70309';
SQL
복사
-- [SQL-5-2-7-2-c] EXPLAIN (ANALYZE,COSTS OFF) SELECT t1.* FROM startdbpg.tr_ord_big t1 WHERE t1.ord_dtm >= '2023-04-01'::date AND t1.ord_dtm < '2023-04-02'::date AND t1.ord_st = 'PKUP';
SQL
복사
-- [SQL-5-2-7-3-a] -- 하루에 약 50,000 번 실행(하루 픽업 데이터 회원별 집계 조회) SELECT t1.mbr_id, t1.pay_tp, COUNT(*) cnt FROM startdbpg.tr_ord_big t1 WHERE t1.pkup_dtm >= '2023-04-01'::date AND t1.pkup_dtm < '2023-04-01'::date + 1 GROUP BY t1.mbr_id, t1.pay_tp; -- 하루에 약 100 번 실행(특정 매장의 하루 픽업 데이터 회원별 집계 조회) SELECT t1.mbr_id, t1.pay_tp, COUNT(*) cnt FROM startdbpg.tr_ord_big t1 WHERE t1.shop_id = 'S100' AND t1.pkup_dtm >= '2024-12-01'::date AND t1.pkup_dtm < '2024-12-01'::date + 1 GROUP BY t1.mbr_id, t1.pay_tp; -- 하루에 약 500 번 실행(특정 회원의 하루 픽업 데이터 조회) SELECT t1.* FROM startdbpg.tr_ord_big t1 WHERE t1.mbr_id = 'M17911' AND t1.pkup_dtm >= '2024-12-01'::date AND t1.pkup_dtm < '2024-12-01'::date + 1 ORDER BY t1.pkup_dtm DESC LIMIT 3;
SQL
복사