Re: WIP: Covering + unique indexes.
Thomas Munro <thomas.munro@enterprisedb.com>
On Fri, Jan 26, 2018 at 3:01 AM, Anastasia Lubennikova <a.lubennikova@postgrespro.ru> wrote: > Thanks for the reminder. Rebased patches are attached. This is a really cool and also difficult feature. Thanks for working on it! Here are a couple of quick comments on the documentation, since I noticed it doesn't build: SGML->XML change: (1) empty closing tags "</>" are no longer accepted, (2) <xref ...> now needs to be written <xref .../> and (3) xref IDs are now case-sensitive. + PRIMARY KEY ( <replaceable class="parameter">column_name</replaceable> [, ... ] ) <replaceable class="parameter">index_parameters</replaceable> <optional>INCLUDE (<replaceable class="parameter">column_name</replaceable> [, ...])</optional> | I hadn't seen that use of "<optional>" before. Almost everywhere else we use explicit [ and ] characters, but I see that there are other examples, and it is rendered as [ and ] in the output. OK, cool, but I think there should be some extra whitespace so that it comes out as: [ INCLUDE ... ] instead of: [INCLUDE ...] to fit with the existing convention. + ... This also allows <literal>UNIQUE</> indexes to be defined on + one set of columns, which can include another set of columns in the + <literal>INCLUDE</> clause, on which the uniqueness is not enforced. + It's the same with other constraints (PRIMARY KEY and EXCLUDE). This can + also can be used for non-unique indexes as any columns which are not required + for the searching or ordering of records can be used in the + <literal>INCLUDE</> clause, which can slightly reduce the size of the index. Can I suggest rewording these three sentences a bit? Just an idea: <literal>UNIQUE</literal> indexes, <literal>PRIMARY KEY</literal> constraints and <literal>EXCLUDE</literal> constraints can be defined with extra columns in an <literal>INCLUDE</literal> clause, in which case uniqueness is not enforced for the extra columns. Moving columns that are not needed for searching, ordering or uniqueness into the <literal>INCLUDE</literal> clause can sometimes reduce the size of the index while retaining the possibility of using a faster index-only scan. -- Thomas Munro http://www.enterprisedb.com
Commits
-
Adjust INCLUDE index truncation comments and code.
- 075aade4361b 11.0 landed
-
Add commentary explaining why MaxIndexTuplesPerPage calculation is safe.
- 2a67d6440db4 11.0 cited
-
Indexes with INCLUDE columns and their support in B-tree
- 8224de4f42cc 11.0 landed
-
Add amcheck verification of heap relations belonging to btree indexes.
- 7f563c09f890 11.0 cited
-
Doc: move info for btree opclass implementors into main documentation.
- 3785f7eee3d9 11.0 cited
-
Doc: mention that you can't PREPARE TRANSACTION after NOTIFY.
- e4fbf22831c2 11.0 cited
-
Remove dedicated B-tree root-split record types.
- 0c504a80cf2e 11.0 cited
-
Restructure index access method API to hide most of it at the C level.
- 65c5fcd353a8 9.6.0 cited
-
Split _bt_insertonpg to two functions.
- bc292937ae6a 8.3.0 cited
-
Major overhaul of btree index code. Eliminate special BTP_CHAIN logic for
- 9e85183bfc31 7.1.1 cited