|PostgreSQL Reference Manual - Volume 2 - Programming Guide|
by The PostgreSQL Global Development Group
Paperback (6"x9"), 408 pages
RRP £19.95 ($34.95)
Sales of this book support the PostgreSQL project! Get a printed copy>>>
5.14.1 Index Methods and Operator Classes
pg_am table contains one row for every
index method (internally known as access method). Support for
regular access to tables is built into
PostgreSQL, but all index methods are
pg_am. It is possible to add a
new index method by defining the required interface routines and
then creating a row in
pg_am---but that is
beyond the scope of this chapter (see Volume 4: Index Access Method Interface Definition).
The routines for an index method do not directly know anything
about the data types that the index method will operate on.
Instead, an operator
identifies the set of operations that the index method needs to use
to work with a particular data type. Operator classes are so
called because one thing they specify is the set of
WHERE-clause operators that can be used with an index
(i.e., can be converted into an index-scan qualification). An
operator class may also specify some support
procedures that are needed by the internal operations of the
index method, but do not directly correspond to any
WHERE-clause operator that can be used with the index.
It is possible to define multiple operator classes for the same data type and index method. By doing this, multiple sets of indexing semantics can be defined for a single data type. For example, a B-tree index requires a sort ordering to be defined for each data type it works on. It might be useful for a complex-number data type to have one B-tree operator class that sorts the data by complex absolute value, another that sorts by real part, and so on. Typically, one of the operator classes will be deemed most commonly useful and will be marked as the default operator class for that data type and index method.
The same operator class name
can be used for several different index methods (for example, both B-tree
and hash index methods have operator classes named
int4_ops), but each such class is an independent
entity and must be defined separately.
|ISBN 0954612035||PostgreSQL Reference Manual - Volume 2 - Programming Guide||See the print edition|