>>>> 1차 explain
explain analyze SELECT * FROM b_test2_board AS b1 order by topno, seq limit 15 offset 15000;
NOTICE: QUERY PLAN:
Limit (cost=31906.29..31938.19 rows=15 width=1207) (actual time=1387.72..1388.80 rows=15 loops=1)
-> Index Scan using b_test2_board_topseq on b_test2_board b1 (cost=0.00..54155.60 rows=25460 width=1207) (actual time=0.91..1290.71 rows=15016 loops=1)
Total runtime: 1389.26 msec
.
>>> 2차 explain
explain analyze SELECT * FROM b_test2_board AS b1 order by topno, seq limit 15 offset 20000;
NOTICE: QUERY PLAN:
Limit (cost=39565.76..39565.76 rows=15 width=1207) (actual time=17942.09..17942.41 rows=15 loops=1)
-> Sort (cost=39565.76..39565.76 rows=25460 width=1207) (actual time=17171.49..17816.67 rows=20016 loops=1)
-> Seq Scan on b_test2_board b1 (cost=0.00..3412.60 rows=25460 width=1207) (actual time=2.60..2174.01 rows=25460 loops=1)
Total runtime: 18449.81 msec
offset 을 15000 까지 했을때는 index를 사용하는데 왜 offset 20000부터는 index 사용을 안하는걸까요. 다른 모든 조건은 같은 사항인데요 .
참고로 아래와 같이 인덱스 생성했습니다.
CREATE INDEX b_test2_board_idx_topno_seq ON b_test2_board USING btree (seq, topno);
고수님들의 조언을 바랍니다 . |