インデックス定義はインデックスのそれぞれの列に演算子クラスを指定することができます。
CREATE INDEX name ON table (column opclass [, ...]);
演算子クラスは、インデックスがその列のために使う演算子を特定します。たとえば、4バイトの整数のB-treeインデックスはint4_opsクラスを使用します。この演算子クラスは4バイト整数の比較関数を含んでいます。実際には、列のデータ型のデフォルト演算子クラスで普通は十分です。演算子クラスを持つことの大きな意味は、いくつかのデータ型には、1つ以上の意味のある順番があり得るということです。たとえば、複素数データ型を絶対値か実数部でソートしたいということがあるかもしれません。これはデータ型の2つの演算子クラスを定義し、インデックスを作るときに適切なクラスを選択することで可能です。ほかにも、特別な目的のための演算子クラスがいくつかあります。
演算子クラスであるbox_opsとbigbox_opsは、両方ともR-treeインデックスをboxデータ型でサポートしています。これらの違いは、bigbox_opsは浮動小数点の例外が非常に大きな浮動小数点の座標で積算、加算、減算の際に発生することを回避するために、ボックス座標を縮小するという点です。もし矩形があるフィールドが20,000ユニット平方かそれ以上の場合は、 bigbox_opsを使うべきでしょう。
下記の問い合わせは、定義済みのすべての演算子クラスを返します。
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