BRIN
Block summaries
BRIN indexes (a shorthand for Block Range INdexes) store summaries about the values stored in consecutive physical block ranges of a table. Thus, they are most effective for columns whose values are well-correlated with the physical order of the table rows. Like GiST, SP-GiST and GIN, BRIN can support many different indexing strategies, and the particular operators with which a BRIN index can be used vary depending on the indexing strategy. For data types that have a linear sort order, the indexed data corresponds to the minimum and maximum values of the values in the column for each block range. This supports indexed queries using these operators:
Reading PostgreSQL 18.6.
Capabilities · PostgreSQL 18.6
These are same-version documentary conclusions. Conditional capabilities depend on the operator class, indexed type or query; they are not universal guarantees.
| Capability | Support | Conditions and evidence |
|---|---|---|
| Sorted output | No | Ordinary sorted output is distinct from ordering by an operator, such as nearest-neighbor distance. Same-version documentation
|
| Unique keys | No | This means a unique index. Exclusion constraints use a different contract. Same-version documentation
|
| Multiple key columns | Yes | Multiple search keys are distinct from non-key INCLUDE payload columns. Same-version documentation
|
| INCLUDE columns | No | Payload columns do not become search keys. Wide payloads can exceed the index tuple-size limit. Same-version documentation
|
| Index-only scans | No | The query must use covered values; visibility-map state determines whether heap visits can be avoided. Same-version documentation
|
| Distance ordering | Not established | Availability depends on the chosen operator class and ordering operator. The sampled source does not establish this capability. This is not a “no”. |
| Parallel index scan | No | A cooperating scan of one index is distinct from a parallel bitmap heap scan or separate serial scans under Parallel Append. Same-version documentation
|
| Parallel index build | Yes | Parallel construction is separate from parallel scans. Worker availability, settings and build phases also matter. Same-version documentation
|
Queries, operators and limitations
CREATE INDEX name ON table_name USING brin (column_name);Syntax template; replace the table and column placeholders with suitable objects and choose a compatible operator class.
BRIN indexes (a shorthand for Block Range INdexes) store summaries about the values stored in consecutive physical block ranges of a table. Thus, they are most effective for columns whose values are well-correlated with the physical order of the table rows. Like GiST, SP-GiST and GIN, BRIN can support many different indexing strategies, and the particular operators with which a BRIN index can be used vary depending on the indexing strategy. For data types that have a linear sort order, the indexed data corresponds to the minimum and maximum values of the values in the column for each block range. This supports indexed queries using these operators:
< <= = >= >The BRIN operator classes included in the standard distribution are documented in Table 65.4 . For more information see Section 65.5 .
Storage options
Set index options with CREATE INDEX … WITH or ALTER INDEX … SET. Defaults and effective behavior depend on the access method and selected PostgreSQL version.
pages_per_range
Defines the number of table blocks that make up one block range for each entry of a BRIN index (see Section 65.5.1 for more details). The default is 128 .
Same-version option definition
autosummarize
Defines whether a summarization run is queued for the previous page range whenever an insertion is detected on the next one (see Section 65.5.1.1 for more details). The default is off .
Version comparison
No differences in documented capability states or storage-option inventory between these samples.
This comparison covers capability states and the names of documented storage options. It does not compare every algorithm, performance characteristic, option definition or release-note change.
Documented history
PostgreSQL 16 → 17
- Parallel index build: No → Yes
PostgreSQL 10 → 11
- Parallel index build: Not established → No (source coverage changed)
PostgreSQL 9.6 → 10
- Parallel index scan: Not established → No (source coverage changed)
- Storage option recorded:
autosummarize
PostgreSQL 9.5 → 9.6
- Index-only scans: Not established → No (source coverage changed)
PostgreSQL 9.4 → 9.5
First present in this sampled inventory.
Related documentation and objects
Sources and build identity
Extracted from the loaded English manual build 18.6. No runtime capability measurement is claimed.
- PostgreSQL 18.6: BRIN
- PostgreSQL 18.6 · catalog-pg-am
- PostgreSQL 18.6 · hash-index
- PostgreSQL 18.6 · indexam
- PostgreSQL 18.6 · indexes-index-only-scans
- PostgreSQL 18.6 · indexes-multicolumn
- PostgreSQL 18.6 · indexes-opclass
- PostgreSQL 18.6 · indexes-ordering
- PostgreSQL 18.6 · indexes-unique
- PostgreSQL 18.6 · parallel-plans
- PostgreSQL 18.6 · sql-createindex
Source fingerprints
- Manual build
- PostgreSQL 18.6 Documentation
- Combined page SHA-256
0e39ebd4fddbd990280e62f4503f0bd18765bbd990dccf4cba976b5d47da45e7- Source archive recorded by the manual manifest
- 18.6
- Archive SHA-256 recorded by the manual manifest
555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f
- indexes-types.html:
cee340145a2ef5fbd807f66755b10d22bb049e328c460f572f45ad6193e7e4a1 - catalog-pg-am.html:
579364179365a51945e2edb6481df5d198916c2c725e506f166824dedf08994c - hash-index.html:
b994550220e1ee05648d09804c9eb2302834e07e261932420a96605d7c9c6140 - indexam.html:
0a38f7c0ac0541f31e086c83a624e782c15367456578a6dd3329882516bc1080 - indexes-index-only-scans.html:
2322ec12b82f3fd01ee4072049caaa5a0190148ac68d98c0fcd6eda958828a83 - indexes-multicolumn.html:
c0a799ec49b8ef057a63d465fb1d72a3b81e16d652c28a71734d45592d081202 - indexes-opclass.html:
07de06abf3a2aff2a891a2789def434d9b76705e54d45ca5338dc13451ae2962 - indexes-ordering.html:
85fac99c7c66ed19dd021f12b5cc53ce18aa5bfa4b56c8c168317f99b8f12d3b - indexes-unique.html:
7c3eac7fa180b22534ff01df0c68155f15b6b360ffe35507c5266059116840db - parallel-plans.html:
62207d207bead82b01b59dc119c4f95856f08655cc11d4699a05a40867ed2070 - sql-createindex.html:
6aa00da55815d13d0355dd25cb1cdb603fa36964993f164d1b6f486011282580
Back to Index AM · Recorded in PostgreSQL 9.5 through 20; first presence in this sample does not establish first introduction.