他のバージョンの文書 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

7.6. 演算子クラス

インデックス定義はインデックスのそれぞれの列に演算子クラスを指定することができます。

CREATE INDEX name ON table (column opclass [, ...]);

演算子クラスは、インデックスがその列のために使う演算子を特定します。たとえば、4バイトの整数のB-treeインデックスはint4_opsクラスを使用します。この演算子クラスは4バイト整数の比較関数を含んでいます。実際には、列のデータ型のデフォルト演算子クラスで普通は十分です。演算子クラスを持つことの大きな意味は、いくつかのデータ型には、1つ以上の意味のある順番があり得るということです。たとえば、複素数データ型を絶対値か実数部でソートしたいということがあるかもしれません。これはデータ型の2つの演算子クラスを定義し、インデックスを作るときに適切なクラスを選択することで可能です。ほかにも、特別な目的のための演算子クラスがいくつかあります。

下記の問い合わせは、定義済みのすべての演算子クラスを返します。

SELECT am.amname AS acc_method,
       opc.opcname AS ops_name,
       opr.oprname AS ops_comp
    FROM pg_am am, pg_opclass opc, pg_amop amop, pg_operator opr
    WHERE opc.opcamid = am.oid AND
          amop.amopclaid = opc.oid AND
          amop.amopopr = opr.oid
    ORDER BY acc_method, ops_name, ops_comp