7.6. 演算子クラス

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

CREATE INDEX name ON table (column opclass [, ...]);
演算子クラスは、インデックスがそのカラムのために使う演算子を特定します。 例えば、4 バイトの整数の B-tree インデックスはint4_ops を使います。この演算子クラスは 4 バイト整数の比較関数を含んでいます。 実際には、カラムのデータ型のデフォルト演算子クラスで普通は十分です。 演算子クラスを持つことの大きな意味は、いくつかのデータ型にはひとつ 以上の意味のある順番があり得るということです。例えば、複素数データ型 を絶対値か実数部でソートしたいということがあるかもしれません。 これはデータ型の二つの演算子クラスを定義し、インデックスを作る時に 相応しいクラスを選択することで可能です。他にも、特別な目的のための 演算子クラスがいくつかあります。

次の問い合わせは全ての定義された演算子クラスをあらわしています。

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