@@ -90,6 +90,39 @@ CREATE INDEX test1_id_index ON test1 (id);
90
90
also significantly speed up queries with joins.
91
91
</para>
92
92
93
+ <para>
94
+ In general, <productname>PostgreSQL</productname> indexes can be used
95
+ to optimize queries that contain one or more <literal>WHERE</literal>
96
+ or <literal>JOIN</literal> clauses of the form
97
+
98
+ <synopsis>
99
+ <replaceable>indexed-column</replaceable> <replaceable>indexable-operator</replaceable> <replaceable>comparison-value</replaceable>
100
+ </synopsis>
101
+
102
+ Here, the <replaceable>indexed-column</replaceable> is whatever
103
+ column or expression the index has been defined on.
104
+ The <replaceable>indexable-operator</replaceable> is an operator that
105
+ is a member of the index's <firstterm>operator class</firstterm> for
106
+ the indexed column. (More details about that appear below.)
107
+ And the <replaceable>comparison-value</replaceable> can be any
108
+ expression that is not volatile and does not reference the index's
109
+ table.
110
+ </para>
111
+
112
+ <para>
113
+ In some cases the query planner can extract an indexable clause of
114
+ this form from another SQL construct. A simple example is that if
115
+ the original clause was
116
+
117
+ <synopsis>
118
+ <replaceable>comparison-value</replaceable> <replaceable>operator</replaceable> <replaceable>indexed-column</replaceable>
119
+ </synopsis>
120
+
121
+ then it can be flipped around into indexable form if the
122
+ original <replaceable>operator</replaceable> has a commutator
123
+ operator that is a member of the index's operator class.
124
+ </para>
125
+
93
126
<para>
94
127
Creating an index on a large table can take a long time. By default,
95
128
<productname>PostgreSQL</productname> allows reads (<command>SELECT</command> statements) to occur
@@ -120,7 +153,7 @@ CREATE INDEX test1_id_index ON test1 (id);
120
153
B-tree, Hash, GiST, SP-GiST, GIN, BRIN, and the extension <link
121
154
linkend="bloom">bloom</link>.
122
155
Each index type uses a different
123
- algorithm that is best suited to different types of queries .
156
+ algorithm that is best suited to different types of indexable clauses .
124
157
By default, the <link linkend="sql-createindex"><command>CREATE
125
158
INDEX</command></link> command creates
126
159
B-tree indexes, which fit the most common situations.
0 commit comments