이것은 의견에서 이전 질문으로의 분리입니다.
PostgreSQL 9.4를 사용하면의 Recheck Cond:
쿼리 계획 출력에서 비트 맵 인덱스 스캔 후 항상 줄 이있는 것 같습니다 EXPLAIN
.
EXPLAIN
참조 된 질문 의 출력 에서와 같이 :
-> Bitmap Heap Scan on table_three (cost=2446.92..19686.74 rows=8159 width=7) Recheck Cond: (("timestamp" > (now() - '30 days'::interval)) AND (client_id > 0)) -> BitmapAnd (cost=2446.92..2446.92 rows=8159 width=0) -> Bitmap Index Scan on table_one_timestamp_idx (cost=0.00..1040.00 rows=79941 width=0) Index Cond: ("timestamp" > (now() - '30 days'::interval)) -> Bitmap Index Scan on fki_table_three_client_id (cost=0.00..1406.05 rows=107978 width=0) Index Cond: (client_id > 0)
또는 EXPLAIN ANALYZE
간단하고 거대한 테이블 의 출력에서 (거의 거의 없음 work_mem
) :
EXPLAIN ANALYZE SELECT * FROM aa WHERE a BETWEEN 100000 AND 200000;
Bitmap Heap Scan on aa (cost=107.68..4818.05 rows=5000 width=4) (actual time=27.629..213.606 rows=100001 loops=1) Recheck Cond: ((a >= 100000) AND (a <= 200000)) Rows Removed by Index Recheck: 758222 Heap Blocks: exact=693 lossy=3732 -> Bitmap Index Scan on aai (cost=0.00..106.43 rows=5000 width=0) (actual time=27.265..27.265 rows=100001 loops=1) Index Cond: ((a >= 100000) AND (a <= 200000))
비트 맵 인덱스 스캔 후 인덱스 조건을 다시 확인해야합니까? 출력
에서 무엇을 더 배울 수 EXPLAIN
있습니까?