summaryrefslogtreecommitdiffstats
path: root/doc/src/sgml/ref/drop_index.sgml
blob: aabc85e2300201f4e747694a9b152ffb6430c932 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<!--
doc/src/sgml/ref/drop_index.sgml
PostgreSQL documentation
-->

<refentry id="sql-dropindex">
 <indexterm zone="sql-dropindex">
  <primary>DROP INDEX</primary>
 </indexterm>

 <refmeta>
  <refentrytitle>DROP INDEX</refentrytitle>
  <manvolnum>7</manvolnum>
  <refmiscinfo>SQL - Language Statements</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>DROP INDEX</refname>
  <refpurpose>remove an index</refpurpose>
 </refnamediv>

 <refsynopsisdiv>
<synopsis>
DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] <replaceable class="parameter">name</replaceable> [, ...] [ CASCADE | RESTRICT ]
</synopsis>
 </refsynopsisdiv>

 <refsect1>
  <title>Description</title>

  <para>
   <command>DROP INDEX</command> drops an existing index from the database
   system. To execute this command you must be the owner of
   the index.
  </para>
 </refsect1>

 <refsect1>
  <title>Parameters</title>

  <variablelist>
   <varlistentry>
    <term><literal>CONCURRENTLY</literal></term>
    <listitem>
     <para>
      Drop the index without locking out concurrent selects, inserts, updates,
      and deletes on the index's table.  A normal <command>DROP INDEX</command>
      acquires an <literal>ACCESS EXCLUSIVE</literal> lock on the table,
      blocking other accesses until the index drop can be completed.  With
      this option, the command instead waits until conflicting transactions
      have completed.
     </para>
     <para>
      There are several caveats to be aware of when using this option.
      Only one index name can be specified, and the <literal>CASCADE</literal> option
      is not supported.  (Thus, an index that supports a <literal>UNIQUE</literal> or
      <literal>PRIMARY KEY</literal> constraint cannot be dropped this way.)
      Also, regular <command>DROP INDEX</command> commands can be
      performed within a transaction block, but
      <command>DROP INDEX CONCURRENTLY</command> cannot.
      Lastly, indexes on partitioned tables cannot be dropped using this
      option.
     </para>
     <para>
      For temporary tables, <command>DROP INDEX</command> is always
      non-concurrent, as no other session can access them, and
      non-concurrent index drop is cheaper.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>IF EXISTS</literal></term>
    <listitem>
     <para>
      Do not throw an error if the index does not exist. A notice is issued
      in this case.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">name</replaceable></term>
    <listitem>
     <para>
      The name (optionally schema-qualified) of an index to remove.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>CASCADE</literal></term>
    <listitem>
     <para>
      Automatically drop objects that depend on the index,
      and in turn all objects that depend on those objects
      (see <xref linkend="ddl-depend"/>).
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>RESTRICT</literal></term>
    <listitem>
     <para>
      Refuse to drop the index if any objects depend on it.  This is
      the default.
     </para>
    </listitem>
   </varlistentry>
  </variablelist>
 </refsect1>

 <refsect1>
  <title>Examples</title>

  <para>
   This command will remove the index <literal>title_idx</literal>:

<programlisting>
DROP INDEX title_idx;
</programlisting></para>
 </refsect1>

 <refsect1>
  <title>Compatibility</title>

  <para>
   <command>DROP INDEX</command> is a
   <productname>PostgreSQL</productname> language extension.  There
   are no provisions for indexes in the SQL standard.
  </para>
 </refsect1>

 <refsect1>
  <title>See Also</title>

  <simplelist type="inline">
   <member><xref linkend="sql-createindex"/></member>
  </simplelist>
 </refsect1>

</refentry>