演算子クラスと演算子族インデックス定義では、インデックスの各列に演算子クラスを指定することができます。...]);演算子クラスにより、その列のインデックスで使用される演算子が特定されます。int4型に対するB-treeインデックスには、int4_opsクラスを使用します。この演算子クラスには、int4型の値用の比較関数が含まれています。実際には、通常、列のデータ型のデフォルト演算子クラスで十分です。演算子クラスを持つ主な理由は、いくつかのデータ型では、複数の有意義なインデックスの振舞いがあり得るということです。複素数データ型を、絶対値でソートしたいかもしれませんし、実数部でソートしたいかもしれません。この処理は、そのデータ型の2つの演算子クラスを定義した上で、インデックスを作成する際に適切なクラスを選択することで、実行可能です。演算子クラスは基本的なソート順を決定します。LASTを付けることで変更できます。)以下のように、デフォルトの演算子クラスとは別に、組み込み演算子クラスがいくつかあります。text_pattern_ops、varchar_pattern_ops、bpchar_pattern_ops、name_pattern_ops演算子クラスは、それぞれ、text、varchar、char型上のB-treeインデックスをサポートします。デフォルトの演算子クラスとの違いは、ロケール特有の照合規則に従わずに、文字同士を厳密に比較する点です。これらの演算子クラスを、標準「C」ロケールを使用しないデータベースにおける、パターンマッチ式(LIKEやPOSIX正規表現)を含む問い合わせでの使用に適したものにします。以下のようにvarcharのインデックスを作成できます。varchar_pattern_ops);また、通常の<、<=、>、または>=比較を含む問い合わせでインデックスを使いたい場合も、デフォルトの演算子クラスでインデックスを作成しなければならないことに注意してください。した問い合わせではxxx_pattern_ops演算子クラスを使用することができません。(しかし、通常の等価比較はこれらの演算子クラスを使用することができます。同じ列に対して異なる演算子クラスを使用して複数のインデックスを作成することができます。Cロケールを使用する場合は、xxx_pattern_ops演算子クラスは必要ありません。Cロケールでのパターンマッチ問い合わせでは、デフォルト演算子クラスを使用したインデックスが使用できるためです。以下の問い合わせは、定義済みの演算子クラスを全て返します。opclass_name;実際のところ演算子クラスは、演算子族と呼ばれる、より大きな構造の一部でしかありません。複数のデータ型が似たような動作を行う場合、データ型を跨る演算子を定義し、インデックスで使用可能とすることが有用な場合がよくあります。このためには、各型に対する演算子クラスが同一の演算子族にまとめられている必要があります。データ型を跨る演算子は演算子族の要素です。演算子族内の1つの演算子クラスに結びついているわけではありません。以下は前述の問い合わせを拡張したバージョンで、各演算子クラスが属する演算子族を示します。opclass_name;以下の問い合わせは、定義済みの演算子族と各演算子族に含まれる演算子をすべて表示します。