1
0
mirror of https://github.com/postgres/postgres.git synced 2025-04-22 23:02:54 +03:00

Clarify use of btree indexes for ILIKE and ~*.

This commit is contained in:
Bruce Momjian 2006-01-18 22:26:01 +00:00
parent 0bfd90ff32
commit 2e2c4f424f

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/indices.sgml,v 1.54 2005/11/04 23:14:00 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/indices.sgml,v 1.54.2.1 2006/01/18 22:26:01 momjian Exp $ -->
<chapter id="indexes">
<title id="indexes-title">Indexes</title>
@ -141,17 +141,21 @@ CREATE INDEX test1_id_index ON test1 (id);
<para>
The optimizer can also use a B-tree index for queries involving the
pattern matching operators <literal>LIKE</>,
<literal>ILIKE</literal>, <literal>~</literal>, and
<literal>~*</literal>, <emphasis>if</emphasis> the pattern is a constant
and is anchored to the beginning of the string &mdash; for example,
<literal>col LIKE 'foo%'</literal> or <literal>col ~ '^foo'</literal>,
but not <literal>col LIKE '%bar'</literal>. However, if your server does
not use the C locale you will need to create the index with a
special operator class to support indexing of pattern-matching queries.
See <xref linkend="indexes-opclass"> below.
pattern matching operators <literal>LIKE</> and <literal>~</literal>
<emphasis>if</emphasis> the pattern is a constant and is anchored to
the beginning of the string &mdash; for example, <literal>col LIKE
'foo%'</literal> or <literal>col ~ '^foo'</literal>, but not
<literal>col LIKE '%bar'</literal>. However, if your server does not
use the C locale you will need to create the index with a special
operator class to support indexing of pattern-matching queries. See
<xref linkend="indexes-opclass"> below. It is also possible to use
B-tree indexes for <literal>ILIKE</literal> and
<literal>~*</literal>, but only if the pattern starts with
non-alphabetic characters, i.e. characters that are not affected by
upper/lower case conversion.
</para>
<para>
<indexterm>
<primary>index</primary>