diff options
author | Alexander Korotkov <akorotkov@postgresql.org> | 2019-03-10 11:36:47 +0300 |
---|---|---|
committer | Alexander Korotkov <akorotkov@postgresql.org> | 2019-03-10 11:37:17 +0300 |
commit | f2e403803fe6deb8cff59ea09dff42c6163b2110 (patch) | |
tree | 1c3afef6e11f6498002b88219d9644e71bb5972d /doc/src | |
parent | a0b762626884b3b949c2703abb1c4b42fbbdfdc6 (diff) | |
download | postgresql-f2e403803fe6deb8cff59ea09dff42c6163b2110.tar.gz postgresql-f2e403803fe6deb8cff59ea09dff42c6163b2110.zip |
Support for INCLUDE attributes in GiST indexes
Similarly to B-tree, GiST index access method gets support of INCLUDE
attributes. These attributes aren't used for tree navigation and aren't
present in non-leaf pages. But they are present in leaf pages and can be
fetched during index-only scan.
The point of having INCLUDE attributes in GiST indexes is slightly different
from the point of having them in B-tree. The main point of INCLUDE attributes
in B-tree is to define UNIQUE constraint over part of attributes enabled for
index-only scan. In GiST the main point of INCLUDE attributes is to use
index-only scan for attributes, whose data types don't have GiST opclasses.
Discussion: https://postgr.es/m/73A1A452-AD5F-40D4-BD61-978622FF75C1%40yandex-team.ru
Author: Andrey Borodin, with small changes by me
Reviewed-by: Andreas Karlsson
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/indices.sgml | 6 | ||||
-rw-r--r-- | doc/src/sgml/ref/create_index.sgml | 8 | ||||
-rw-r--r-- | doc/src/sgml/textsearch.sgml | 6 |
3 files changed, 13 insertions, 7 deletions
diff --git a/doc/src/sgml/indices.sgml b/doc/src/sgml/indices.sgml index 46f427b3124..9943e8ecd4c 100644 --- a/doc/src/sgml/indices.sgml +++ b/doc/src/sgml/indices.sgml @@ -1145,8 +1145,8 @@ CREATE UNIQUE INDEX tab_x_y ON tab(x) INCLUDE (y); likely to not need to access the heap. If the heap tuple must be visited anyway, it costs nothing more to get the column's value from there. Other restrictions are that expressions are not currently supported as - included columns, and that only B-tree indexes currently support included - columns. + included columns, and that only B-tree and GiST indexes currently support + included columns. </para> <para> @@ -1165,7 +1165,7 @@ CREATE INDEX tab_x_y ON tab(x, y); enforce uniqueness on the key column(s). Also, explicitly marking non-searchable columns as <literal>INCLUDE</literal> columns makes the index slightly smaller, because such columns need not be stored in upper - B-tree levels. + tree levels. </para> <para> diff --git a/doc/src/sgml/ref/create_index.sgml b/doc/src/sgml/ref/create_index.sgml index ad619cdcfe4..d8f018f4dac 100644 --- a/doc/src/sgml/ref/create_index.sgml +++ b/doc/src/sgml/ref/create_index.sgml @@ -181,10 +181,10 @@ CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] <replaceable class= </para> <para> - Currently, only the B-tree index access method supports this feature. - In B-tree indexes, the values of columns listed in the - <literal>INCLUDE</literal> clause are included in leaf tuples which - correspond to heap tuples, but are not included in upper-level + Currently, the B-tree and the GiST index access methods supports this + feature. In B-tree and the GiST indexes, the values of columns listed + in the <literal>INCLUDE</literal> clause are included in leaf tuples + which correspond to heap tuples, but are not included in upper-level index entries used for tree navigation. </para> </listitem> diff --git a/doc/src/sgml/textsearch.sgml b/doc/src/sgml/textsearch.sgml index ecebade767d..3281f7cd33a 100644 --- a/doc/src/sgml/textsearch.sgml +++ b/doc/src/sgml/textsearch.sgml @@ -3675,6 +3675,12 @@ SELECT plainto_tsquery('supernovae stars'); </para> <para> + A GiST index can be covering, i.e. use the <literal>INCLUDE</literal> + clause. Included columns can have data types without any GiST operator + class. Included attributes will be stored uncompressed. + </para> + + <para> Lossiness causes performance degradation due to unnecessary fetches of table records that turn out to be false matches. Since random access to table records is slow, this limits the usefulness of GiST indexes. The |