1999-07-22 17:09:15 +02:00
|
|
|
<!--
|
2001-09-14 10:05:55 +02:00
|
|
|
$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_index.sgml,v 1.24 2001/09/14 08:05:55 ishii Exp $
|
1999-07-22 17:09:15 +02:00
|
|
|
Postgres documentation
|
|
|
|
-->
|
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<refentry id="SQL-CREATEINDEX">
|
|
|
|
<refmeta>
|
1999-07-22 17:09:15 +02:00
|
|
|
<refentrytitle id="sql-createindex-title">
|
1998-05-13 07:34:00 +02:00
|
|
|
CREATE INDEX
|
1999-07-06 19:16:42 +02:00
|
|
|
</refentrytitle>
|
|
|
|
<refmiscinfo>SQL - Language Statements</refmiscinfo>
|
|
|
|
</refmeta>
|
|
|
|
<refnamediv>
|
|
|
|
<refname>
|
1998-05-13 07:34:00 +02:00
|
|
|
CREATE INDEX
|
1999-07-06 19:16:42 +02:00
|
|
|
</refname>
|
|
|
|
<refpurpose>
|
2001-09-03 14:57:50 +02:00
|
|
|
define a new index
|
1999-07-06 19:16:42 +02:00
|
|
|
</refpurpose>
|
1998-12-29 03:24:47 +01:00
|
|
|
</refnamediv>
|
1999-07-06 19:16:42 +02:00
|
|
|
<refsynopsisdiv>
|
|
|
|
<refsynopsisdivinfo>
|
2001-07-16 07:07:00 +02:00
|
|
|
<date>2001-07-15</date>
|
1999-07-06 19:16:42 +02:00
|
|
|
</refsynopsisdivinfo>
|
|
|
|
<synopsis>
|
1999-07-22 17:09:15 +02:00
|
|
|
CREATE [ UNIQUE ] INDEX <replaceable class="parameter">index_name</replaceable> ON <replaceable class="parameter">table</replaceable>
|
2001-07-16 07:07:00 +02:00
|
|
|
[ USING <replaceable class="parameter">acc_method</replaceable> ] ( <replaceable class="parameter">column</replaceable> [ <replaceable class="parameter">ops_name</replaceable> ] [, ...] )
|
|
|
|
[ WHERE <replaceable class="parameter">predicate</replaceable> ]
|
1999-07-22 17:09:15 +02:00
|
|
|
CREATE [ UNIQUE ] INDEX <replaceable class="parameter">index_name</replaceable> ON <replaceable class="parameter">table</replaceable>
|
2001-07-16 07:07:00 +02:00
|
|
|
[ USING <replaceable class="parameter">acc_method</replaceable> ] ( <replaceable class="parameter">func_name</replaceable>( <replaceable class="parameter">column</replaceable> [, ... ]) [ <replaceable class="parameter">ops_name</replaceable> ] )
|
|
|
|
[ WHERE <replaceable class="parameter">predicate</replaceable> ]
|
1999-07-06 19:16:42 +02:00
|
|
|
</synopsis>
|
|
|
|
|
|
|
|
<refsect2 id="R2-SQL-CREATEINDEX-1">
|
|
|
|
<refsect2info>
|
|
|
|
<date>1998-09-09</date>
|
|
|
|
</refsect2info>
|
|
|
|
<title>
|
1998-05-13 07:34:00 +02:00
|
|
|
Inputs
|
1999-07-06 19:16:42 +02:00
|
|
|
</title>
|
|
|
|
<para>
|
|
|
|
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term>UNIQUE</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Causes the system to check for
|
|
|
|
duplicate values in the table when the index is created (if data
|
|
|
|
already exist) and each time data is added. Attempts to
|
2000-04-11 07:39:15 +02:00
|
|
|
insert or update data which would result in duplicate entries
|
|
|
|
will generate an error.
|
1999-07-06 19:16:42 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
1999-07-22 17:09:15 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="parameter">index_name</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The name of the index to be created.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
1999-07-22 17:09:15 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="parameter">table</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The name of the table to be indexed.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
1999-07-22 17:09:15 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<varlistentry>
|
2001-07-16 07:07:00 +02:00
|
|
|
<term><replaceable class="parameter">acc_method</replaceable></term>
|
1999-07-06 19:16:42 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2000-04-23 04:08:33 +02:00
|
|
|
The name of the access method to be used for
|
1999-07-06 19:16:42 +02:00
|
|
|
the index. The default access method is BTREE.
|
2001-07-16 07:07:00 +02:00
|
|
|
Postgres provides four access methods for indexes:
|
1999-07-22 17:09:15 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term>BTREE</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2000-04-23 04:08:33 +02:00
|
|
|
an implementation of Lehman-Yao
|
1999-07-06 19:16:42 +02:00
|
|
|
high-concurrency btrees.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
1999-07-22 17:09:15 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term>RTREE</term>
|
|
|
|
<listitem>
|
|
|
|
<para>implements standard rtrees using Guttman's
|
|
|
|
quadratic split algorithm.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
1999-07-22 17:09:15 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term>HASH</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
an implementation of Litwin's linear hashing.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
2001-07-16 07:07:00 +02:00
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>GIST</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Generalized Index Search Trees.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
1999-07-06 19:16:42 +02:00
|
|
|
</variablelist>
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="parameter">column</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The name of a column of the table.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
1999-07-22 17:09:15 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="parameter">ops_name</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
1999-07-22 17:09:15 +02:00
|
|
|
An associated operator class. See below for details.
|
1999-07-06 19:16:42 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
1999-07-22 17:09:15 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="parameter">func_name</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2000-04-23 04:08:33 +02:00
|
|
|
A function, which returns a value that can be indexed.
|
1999-07-06 19:16:42 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
2001-07-16 07:07:00 +02:00
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="parameter">predicate</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Defines the constraint expression for a partial index.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
1998-12-29 03:24:47 +01:00
|
|
|
</variablelist>
|
|
|
|
</para>
|
1999-07-06 19:16:42 +02:00
|
|
|
</refsect2>
|
|
|
|
|
|
|
|
<refsect2 id="R2-SQL-CREATEINDEX-2">
|
|
|
|
<refsect2info>
|
|
|
|
<date>1998-09-09</date>
|
|
|
|
</refsect2info>
|
|
|
|
<title>
|
1998-05-13 07:34:00 +02:00
|
|
|
Outputs
|
1999-07-06 19:16:42 +02:00
|
|
|
</title>
|
|
|
|
<para>
|
1998-10-14 18:30:17 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term><computeroutput>
|
|
|
|
CREATE
|
|
|
|
</computeroutput></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The message returned if the index is successfully created.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
1998-10-14 18:30:17 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term><computeroutput>
|
|
|
|
ERROR: Cannot create index: 'index_name' already exists.
|
|
|
|
</computeroutput></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
1998-12-29 03:24:47 +01:00
|
|
|
This error occurs if it is impossible to create the index.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
</para>
|
1999-07-06 19:16:42 +02:00
|
|
|
</refsect2>
|
|
|
|
</refsynopsisdiv>
|
|
|
|
|
|
|
|
<refsect1 id="R1-SQL-CREATEINDEX-1">
|
|
|
|
<refsect1info>
|
|
|
|
<date>1998-09-09</date>
|
|
|
|
</refsect1info>
|
|
|
|
<title>
|
1998-05-13 07:34:00 +02:00
|
|
|
Description
|
1999-07-06 19:16:42 +02:00
|
|
|
</title>
|
|
|
|
<para>
|
1998-12-29 03:24:47 +01:00
|
|
|
<command>CREATE INDEX</command> constructs an index
|
1999-07-22 17:09:15 +02:00
|
|
|
<replaceable class="parameter">index_name</replaceable>
|
|
|
|
on the specified <replaceable class="parameter">table</replaceable>.
|
1999-07-06 19:16:42 +02:00
|
|
|
|
1998-12-29 03:24:47 +01:00
|
|
|
<tip>
|
|
|
|
<para>
|
|
|
|
Indexes are primarily used to enhance database performance.
|
|
|
|
But inappropriate use will result in slower performance.
|
|
|
|
</para>
|
|
|
|
</tip>
|
|
|
|
</para>
|
1999-07-22 17:09:15 +02:00
|
|
|
|
1998-05-13 07:34:00 +02:00
|
|
|
<para>
|
2000-04-23 04:08:33 +02:00
|
|
|
In the first syntax shown above, the key field(s) for the
|
|
|
|
index are specified as column names.
|
|
|
|
Multiple fields can be specified if the index access method supports
|
|
|
|
multi-column indexes.
|
1998-05-13 07:34:00 +02:00
|
|
|
</para>
|
1999-07-22 17:09:15 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<para>
|
1999-07-22 17:09:15 +02:00
|
|
|
In the second syntax shown above, an index is defined
|
2000-04-23 04:08:33 +02:00
|
|
|
on the result of a user-specified function
|
1999-07-06 19:16:42 +02:00
|
|
|
<replaceable class="parameter">func_name</replaceable> applied
|
2001-01-14 00:58:55 +01:00
|
|
|
to one or more columns of a single table.
|
2001-05-17 23:50:18 +02:00
|
|
|
These <firstterm>functional indexes</firstterm>
|
1999-07-22 17:09:15 +02:00
|
|
|
can be used to obtain fast access to data
|
1999-07-06 19:16:42 +02:00
|
|
|
based on operators that would normally require some
|
|
|
|
transformation to apply them to the base data.
|
|
|
|
</para>
|
|
|
|
|
1999-07-22 17:09:15 +02:00
|
|
|
<para>
|
2001-07-16 07:07:00 +02:00
|
|
|
Postgres provides btree, rtree, hash, and GiST access methods for
|
2001-05-17 23:50:18 +02:00
|
|
|
indexes. The btree access method is an implementation of
|
2000-04-23 04:08:33 +02:00
|
|
|
Lehman-Yao high-concurrency btrees. The rtree access method
|
1999-07-22 17:09:15 +02:00
|
|
|
implements standard rtrees using Guttman's quadratic split algorithm.
|
|
|
|
The hash access method is an implementation of Litwin's linear
|
|
|
|
hashing. We mention the algorithms used solely to indicate that all
|
|
|
|
of these access methods are fully dynamic and do not have to be
|
|
|
|
optimized periodically (as is the case with, for example, static hash
|
|
|
|
access methods).
|
|
|
|
</para>
|
|
|
|
|
2001-07-16 07:07:00 +02:00
|
|
|
<para>
|
|
|
|
When the <command>WHERE</command> clause is present, a
|
|
|
|
<firstterm>partial index</firstterm> is created.
|
|
|
|
A partial index is an index that contains entries for only a portion of
|
|
|
|
a table, usually a portion that is somehow more interesting than the
|
|
|
|
rest of the table. For example, if you have a table that contains both
|
|
|
|
billed and unbilled orders where the unbilled orders take up a small
|
|
|
|
fraction of the total table and yet that is an often used section, you
|
|
|
|
can improve performance by creating an index on just that portion.
|
2001-08-06 20:09:45 +02:00
|
|
|
Another possible application is to use <command>WHERE</command> with
|
|
|
|
<command>UNIQUE</command> to enforce uniqueness over a subset of a
|
|
|
|
table.
|
2001-07-16 07:07:00 +02:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The expression used in the <command>WHERE</command> clause may refer
|
|
|
|
only to columns of the underlying table (but it can use all columns,
|
2001-08-06 20:09:45 +02:00
|
|
|
not only the one(s) being indexed). Presently, sub-SELECTs and
|
|
|
|
aggregate expressions are also forbidden in <command>WHERE</command>.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
All functions and operators used in an index definition must be
|
|
|
|
<firstterm>cachable</>, that is, their results must depend only on
|
|
|
|
their input arguments and never on any outside influence (such as
|
|
|
|
the contents of another table or the current time). This restriction
|
|
|
|
ensures that the behavior of the index is well-defined. To use a
|
|
|
|
user-defined function in an index, remember to mark the function cachable
|
|
|
|
when you create it.
|
2001-07-16 07:07:00 +02:00
|
|
|
</para>
|
|
|
|
|
2000-05-02 22:02:03 +02:00
|
|
|
<para>
|
2000-12-26 00:15:27 +01:00
|
|
|
Use <xref linkend="sql-dropindex" endterm="sql-dropindex-title">
|
2000-05-02 22:02:03 +02:00
|
|
|
to remove an index.
|
|
|
|
</para>
|
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<refsect2 id="R2-SQL-CREATEINDEX-3">
|
|
|
|
<refsect2info>
|
|
|
|
<date>1998-09-09</date>
|
|
|
|
</refsect2info>
|
|
|
|
<title>
|
1998-05-13 07:34:00 +02:00
|
|
|
Notes
|
1999-07-06 19:16:42 +02:00
|
|
|
</title>
|
1999-07-22 17:09:15 +02:00
|
|
|
|
|
|
|
<para>
|
2000-04-23 04:08:33 +02:00
|
|
|
The <productname>Postgres</productname>
|
|
|
|
query optimizer will consider using a btree index whenever
|
|
|
|
an indexed attribute is involved in a comparison using one of:
|
1999-07-22 17:09:15 +02:00
|
|
|
|
|
|
|
<simplelist type="inline">
|
|
|
|
<member><</member>
|
|
|
|
<member><=</member>
|
|
|
|
<member>=</member>
|
|
|
|
<member>>=</member>
|
|
|
|
<member>></member>
|
|
|
|
</simplelist>
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The <productname>Postgres</productname>
|
|
|
|
query optimizer will consider using an rtree index whenever
|
|
|
|
an indexed attribute is involved in a comparison using one of:
|
|
|
|
|
|
|
|
<simplelist type="inline">
|
|
|
|
<member><<</member>
|
|
|
|
<member>&<</member>
|
|
|
|
<member>&></member>
|
|
|
|
<member>>></member>
|
|
|
|
<member>@</member>
|
|
|
|
<member>~=</member>
|
|
|
|
<member>&&</member>
|
|
|
|
</simplelist>
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The <productname>Postgres</productname>
|
|
|
|
query optimizer will consider using a hash index whenever
|
|
|
|
an indexed attribute is involved in a comparison using
|
|
|
|
the <literal>=</literal> operator.
|
|
|
|
</para>
|
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<para>
|
2001-07-16 07:07:00 +02:00
|
|
|
Currently, only the btree and gist access methods support multi-column
|
2000-04-23 04:08:33 +02:00
|
|
|
indexes. Up to 16 keys may be specified by default (this limit
|
2001-07-16 07:07:00 +02:00
|
|
|
can be altered when building Postgres). Only btree currently supports
|
|
|
|
unique indexes.
|
1998-05-13 07:34:00 +02:00
|
|
|
</para>
|
1999-07-22 17:09:15 +02:00
|
|
|
|
2000-04-23 04:08:33 +02:00
|
|
|
<para>
|
|
|
|
An <firstterm>operator class</firstterm> can be specified for each
|
|
|
|
column of an index. The operator class identifies the operators to
|
|
|
|
be used by the index for that column. For example, a btree index on
|
|
|
|
four-byte integers would use the <literal>int4_ops</literal> class;
|
|
|
|
this operator class includes comparison functions for four-byte
|
|
|
|
integers. In practice the default operator class for the field's
|
2000-09-12 22:52:08 +02:00
|
|
|
data type is usually sufficient. The main point of having operator classes
|
|
|
|
is that for some data types, there could be more than one meaningful
|
|
|
|
ordering. For example, we might want to sort a complex-number data type
|
2000-04-23 04:08:33 +02:00
|
|
|
either by absolute value or by real part. We could do this by defining
|
2000-09-12 22:52:08 +02:00
|
|
|
two operator classes for the data type and then selecting the proper
|
2000-04-23 04:08:33 +02:00
|
|
|
class when making an index. There are also some operator classes with
|
|
|
|
special purposes:
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The operator classes <literal>box_ops</literal> and
|
2001-05-17 23:50:18 +02:00
|
|
|
<literal>bigbox_ops</literal> both support rtree indexes on the
|
2000-09-12 22:52:08 +02:00
|
|
|
<literal>box</literal> data type.
|
2000-04-23 04:08:33 +02:00
|
|
|
The difference between them is that <literal>bigbox_ops</literal>
|
2000-10-05 21:48:34 +02:00
|
|
|
scales box coordinates down, to avoid floating-point exceptions from
|
2000-04-23 04:08:33 +02:00
|
|
|
doing multiplication, addition, and subtraction on very large
|
2001-07-16 07:07:00 +02:00
|
|
|
floating-point coordinates. (Note: this was true some time ago,
|
|
|
|
but currently the two operator classes both use floating point
|
|
|
|
and are effectively identical.)
|
2000-04-23 04:08:33 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</para>
|
1999-07-22 17:09:15 +02:00
|
|
|
|
|
|
|
<para>
|
2000-04-23 04:08:33 +02:00
|
|
|
The following query shows all defined operator classes:
|
1999-07-22 17:09:15 +02:00
|
|
|
|
|
|
|
<programlisting>
|
2001-07-16 07:07:00 +02:00
|
|
|
SELECT am.amname AS acc_method,
|
1999-07-22 17:09:15 +02:00
|
|
|
opc.opcname AS ops_name,
|
|
|
|
opr.oprname AS ops_comp
|
2001-08-21 18:36:06 +02:00
|
|
|
FROM pg_am am, pg_opclass opc, pg_amop amop, pg_operator opr
|
|
|
|
WHERE opc.opcamid = am.oid AND
|
1999-07-22 17:09:15 +02:00
|
|
|
amop.amopclaid = opc.oid AND
|
|
|
|
amop.amopopr = opr.oid
|
2001-09-14 10:05:55 +02:00
|
|
|
ORDER BY acc_method, ops_name, ops_comp;
|
1999-07-22 17:09:15 +02:00
|
|
|
</programlisting>
|
|
|
|
</para>
|
1999-07-06 19:16:42 +02:00
|
|
|
</refsect2>
|
1998-12-29 03:24:47 +01:00
|
|
|
</refsect1>
|
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<refsect1 id="R1-SQL-CREATEINDEX-2">
|
|
|
|
<title>
|
1998-05-13 07:34:00 +02:00
|
|
|
Usage
|
1999-07-06 19:16:42 +02:00
|
|
|
</title>
|
|
|
|
<para>To create a btree index on the field <literal>title</literal>
|
1998-05-13 07:34:00 +02:00
|
|
|
in the table <literal>films</literal>:
|
1999-07-06 19:16:42 +02:00
|
|
|
</para>
|
|
|
|
<programlisting>
|
1998-09-16 16:43:12 +02:00
|
|
|
CREATE UNIQUE INDEX title_idx
|
|
|
|
ON films (title);
|
1999-07-06 19:16:42 +02:00
|
|
|
</programlisting>
|
1998-09-16 16:43:12 +02:00
|
|
|
|
|
|
|
<!--
|
|
|
|
<comment>
|
|
|
|
Is this example correct?
|
|
|
|
</comment>
|
1998-05-13 07:34:00 +02:00
|
|
|
<para>
|
|
|
|
To create a rtree index on a point attribute so that we
|
|
|
|
can efficiently use box operators on the result of the
|
|
|
|
conversion function:
|
|
|
|
</para>
|
|
|
|
<programlisting>
|
1998-09-16 16:43:12 +02:00
|
|
|
CREATE INDEX pointloc
|
|
|
|
ON points USING RTREE (point2box(location) box_ops);
|
|
|
|
SELECT * FROM points
|
|
|
|
WHERE point2box(points.pointloc) = boxes.box;
|
1998-05-13 07:34:00 +02:00
|
|
|
</programlisting>
|
1998-09-16 16:43:12 +02:00
|
|
|
-->
|
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
</refsect1>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<refsect1 id="R1-SQL-CREATEINDEX-3">
|
|
|
|
<title>
|
1998-05-13 07:34:00 +02:00
|
|
|
Compatibility
|
1999-07-06 19:16:42 +02:00
|
|
|
</title>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<refsect2 id="R2-SQL-CREATEINDEX-4">
|
|
|
|
<refsect2info>
|
|
|
|
<date>1998-09-09</date>
|
|
|
|
</refsect2info>
|
|
|
|
<title>
|
1998-05-13 07:34:00 +02:00
|
|
|
SQL92
|
1999-07-06 19:16:42 +02:00
|
|
|
</title>
|
|
|
|
<para>
|
1998-09-16 16:43:12 +02:00
|
|
|
CREATE INDEX is a <productname>Postgres</productname> language extension.
|
1999-07-06 19:16:42 +02:00
|
|
|
</para>
|
1998-05-13 07:34:00 +02:00
|
|
|
<para>
|
1998-09-16 16:43:12 +02:00
|
|
|
There is no <command>CREATE INDEX</command> command in SQL92.
|
1998-05-13 07:34:00 +02:00
|
|
|
</para>
|
|
|
|
</refsect2>
|
|
|
|
</refsect1>
|
1999-07-06 19:16:42 +02:00
|
|
|
</refentry>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
|
|
Local variables:
|
|
|
|
mode: sgml
|
1999-07-06 19:16:42 +02:00
|
|
|
sgml-omittag:nil
|
1998-05-13 07:34:00 +02:00
|
|
|
sgml-shorttag:t
|
|
|
|
sgml-minimize-attributes:nil
|
|
|
|
sgml-always-quote-attributes:t
|
|
|
|
sgml-indent-step:1
|
|
|
|
sgml-indent-data:t
|
|
|
|
sgml-parent-document:nil
|
|
|
|
sgml-default-dtd-file:"../reference.ced"
|
|
|
|
sgml-exposed-tags:nil
|
|
|
|
sgml-local-catalogs:"/usr/lib/sgml/catalog"
|
|
|
|
sgml-local-ecat-files:nil
|
|
|
|
End:
|
|
|
|
-->
|