@@ -118,11 +118,11 @@ SELECT 10000000
118
118
=# EXPLAIN ANALYZE SELECT * FROM tbloom WHERE i2 = 898732 AND i5 = 123451;
119
119
QUERY PLAN
120
120
-------------------------------------------------------------------&zwsp;-----------------------------------
121
- Seq Scan on tbloom (cost=0.00..2137.14 rows=3 width=24) (actual time=15.480..15.480 rows=0 loops=1)
121
+ Seq Scan on tbloom (cost=0.00..213744.00 rows=250 width=24) (actual time=357.059..357.059 rows=0 loops=1)
122
122
Filter: ((i2 = 898732) AND (i5 = 123451))
123
- Rows Removed by Filter: 100000
124
- Planning Time: 0.340 ms
125
- Execution Time: 15.501 ms
123
+ Rows Removed by Filter: 10000000
124
+ Planning Time: 0.346 ms
125
+ Execution Time: 357.076 ms
126
126
(5 rows)
127
127
</programlisting>
128
128
</para>
@@ -136,16 +136,16 @@ CREATE INDEX
136
136
=# SELECT pg_size_pretty(pg_relation_size('btreeidx'));
137
137
pg_size_pretty
138
138
----------------
139
- 3976 kB
139
+ 386 MB
140
140
(1 row)
141
141
=# EXPLAIN ANALYZE SELECT * FROM tbloom WHERE i2 = 898732 AND i5 = 123451;
142
142
QUERY PLAN
143
143
-------------------------------------------------------------------&zwsp;-----------------------------------
144
- Seq Scan on tbloom (cost=0.00..2137 .00 rows=2 width=24) (actual time=12.604..12.604 rows=0 loops=1)
144
+ Seq Scan on tbloom (cost=0.00..213744 .00 rows=2 width=24) (actual time=351.016..351.017 rows=0 loops=1)
145
145
Filter: ((i2 = 898732) AND (i5 = 123451))
146
- Rows Removed by Filter: 100000
147
- Planning Time: 0.155 ms
148
- Execution Time: 12.617 ms
146
+ Rows Removed by Filter: 10000000
147
+ Planning Time: 0.138 ms
148
+ Execution Time: 351.035 ms
149
149
(5 rows)
150
150
</programlisting>
151
151
</para>
@@ -159,19 +159,19 @@ CREATE INDEX
159
159
=# SELECT pg_size_pretty(pg_relation_size('bloomidx'));
160
160
pg_size_pretty
161
161
----------------
162
- 1584 kB
162
+ 153 MB
163
163
(1 row)
164
164
=# EXPLAIN ANALYZE SELECT * FROM tbloom WHERE i2 = 898732 AND i5 = 123451;
165
165
QUERY PLAN
166
166
-------------------------------------------------------------------&zwsp;--------------------------------------------------
167
- Bitmap Heap Scan on tbloom (cost=1792.00..1799.69 rows=2 width=24) (actual time=0.384..0.384 rows=0 loops=1)
167
+ Bitmap Heap Scan on tbloom (cost=1792.00..1799.69 rows=2 width=24) (actual time=22.605..22.606 rows=0 loops=1)
168
168
Recheck Cond: ((i2 = 898732) AND (i5 = 123451))
169
- Rows Removed by Index Recheck: 26
170
- Heap Blocks: exact=26
171
- -> Bitmap Index Scan on bloomidx (cost=0.00..1792 .00 rows=2 width=0) (actual time=0.350..0.350 rows=26 loops=1)
169
+ Rows Removed by Index Recheck: 2300
170
+ Heap Blocks: exact=2256
171
+ -> Bitmap Index Scan on bloomidx (cost=0.00..178436 .00 rows=1 width=0) (actual time=20.005..20.005 rows=2300 loops=1)
172
172
Index Cond: ((i2 = 898732) AND (i5 = 123451))
173
- Planning Time: 0.122 ms
174
- Execution Time: 0.407 ms
173
+ Planning Time: 0.099 ms
174
+ Execution Time: 22.632 ms
175
175
(8 rows)
176
176
</programlisting>
177
177
</para>
@@ -197,21 +197,21 @@ CREATE INDEX
197
197
=# EXPLAIN ANALYZE SELECT * FROM tbloom WHERE i2 = 898732 AND i5 = 123451;
198
198
QUERY PLAN
199
199
-------------------------------------------------------------------&zwsp;--------------------------------------------------------
200
- Bitmap Heap Scan on tbloom (cost=24.34..32.03 rows=2 width=24) (actual time=0.032..0.033 rows=0 loops=1)
200
+ Bitmap Heap Scan on tbloom (cost=9.29..13.30 rows=1 width=24) (actual time=0.032..0.033 rows=0 loops=1)
201
201
Recheck Cond: ((i5 = 123451) AND (i2 = 898732))
202
- -> BitmapAnd (cost=24.34..24.34 rows=2 width=0) (actual time=0.029 ..0.030 rows=0 loops=1)
203
- -> Bitmap Index Scan on btreeidx5 (cost=0.00..12.04 rows=500 width=0) (actual time=0.029 ..0.029 rows=0 loops=1)
202
+ -> BitmapAnd (cost=9.29..9.29 rows=1 width=0) (actual time=0.047 ..0.047 rows=0 loops=1)
203
+ -> Bitmap Index Scan on btreeidx5 (cost=0.00..4.52 rows=11 width=0) (actual time=0.026 ..0.026 rows=7 loops=1)
204
204
Index Cond: (i5 = 123451)
205
- -> Bitmap Index Scan on btreeidx2 (cost=0.00..12.04 rows=500 width=0) (never executed )
205
+ -> Bitmap Index Scan on btreeidx2 (cost=0.00..4.52 rows=11 width=0) (actual time=0.007..0.007 rows=8 loops=1 )
206
206
Index Cond: (i2 = 898732)
207
- Planning Time: 0.537 ms
208
- Execution Time: 0.064 ms
207
+ Planning Time: 0.264 ms
208
+ Execution Time: 0.047 ms
209
209
(9 rows)
210
210
</programlisting>
211
211
Although this query runs much faster than with either of the single
212
212
indexes, we pay a penalty in index size. Each of the single-column
213
- btree indexes occupies 2 MB, so the total space needed is 12 MB,
214
- eight times the space used by the bloom index.
213
+ btree indexes occupies 88.5 MB, so the total space needed is 531 MB,
214
+ over three times the space used by the bloom index.
215
215
</para>
216
216
</sect2>
217
217
0 commit comments