-- [SQL-6-3-5-a]
EXPLAIN (ANALYZE,BUFFERS,COSTS OFF)
SELECT MAX(t1.ord_no) last_ord_no
FROM startdbpg.tr_ord_big t1
WHERE t1.mbr_id = 'M00050';
SQL
복사
-- [SQL-6-3-5-b]: [SQL-6-3-5-a]에 힌트 적용
EXPLAIN (ANALYZE,BUFFERS,COSTS OFF)
SELECT /*+ IndexScan(t1 tr_ord_big_x04) */
MAX(t1.ord_no) last_ord_no
FROM startdbpg.tr_ord_big t1
WHERE t1.mbr_id = 'M00050';
SQL
복사
-- [SQL-6-3-5-c]: [SQL-6-3-5-a]에 MAX 대상 컬럼을 일부러 변형
EXPLAIN (ANALYZE,BUFFERS,COSTS OFF)
SELECT MAX(t1.ord_no::numeric) last_ord_no
FROM startdbpg.tr_ord_big t1
WHERE t1.mbr_id = 'M00050';
SQL
복사
-- [SQL-6-3-5-d]
EXPLAIN (ANALYZE,BUFFERS,COSTS OFF)
SELECT t1.ord_no last_ord_no
FROM startdbpg.tr_ord_big t1
WHERE t1.mbr_id = 'M00050'
ORDER BY t1.ord_no DESC
LIMIT 1;
SQL
복사
-- [SQL-6-3-5-e]: 인덱스 생성후 [SQL-6-3-5-a] 재실행
CREATE INDEX tr_ord_big_x10 ON startdbpg.tr_ord_big(mbr_id, ord_no);
-- [SQL-6-3-5-a]
EXPLAIN (ANALYZE,BUFFERS,COSTS OFF)
SELECT MAX(t1.ord_no) last_ord_no
FROM startdbpg.tr_ord_big t1
WHERE t1.mbr_id = 'M00050';
SQL
복사
-- [SQL-6-3-5-f]
EXPLAIN (ANALYZE,BUFFERS,COSTS OFF)
SELECT MAX(t1.ord_no) last_ord_no
FROM startdbpg.tr_ord_big t1
WHERE t1.mbr_id BETWEEN 'M00050' AND 'M00055';
SQL
복사
