他のバージョンの文書 12 | 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

17.4. アクセスメソッドのサポートルーチン

ストラテジがシステムに対してインデックスを使う方法を見つけるのに十分な 情報を持っていない場合もあります。アクセスメソッドの中には、その動作に 更に、サポートルーチンが必要なものもあります。たとえば B-tree アクセスメソッドは、2 つのキーを比較し、 より大きいのか、等しいのか、より小さいのかを決定できなければなりません。同様に、 R-tree アクセスメソッドは 四角形の共通部分、和集合、交差の度合などを計算できなければなりません。 これらの操作は SQL 問い合わせにおける条件内で使用される演算子と は対応しません。これらは内部的にアクセスメソッドが使用する 管理ルーチンです。

すべての PostgreSQL アクセスメソッドに対して 様々なサポートルーチンを整合的に管理するために、pg_amamsupport と呼ばれる列を含んでいます。この列は、1 つのアクセスメソッドから使われるルーチンの数を持ちます。 B-tree においてはこの数は 1 です。このルーチンは2つのキーを引数とし、最初のキーが2番目のキーより小さいか等しいか大きいかにより、それぞれ -1, 0, +1 を返 します。 (厳密にいうと、このルーチンは負の数(< 0)、0、正の数(> 0)を返すことができます。)

pg_amamstrategies 項目は、対象としているアクセスメソッド用に定義されたストラテジの数に過 ぎません。「より小さい」、「以下」か、といった演算子は pg_am には現れません。同様に、 amsupport はアクセスメソッドが要求するサポートルーチンの数に過ぎません。実際のルーチンは別のところに定義されています。

ところで、amorderstrategyの項目はアクセスメソッドが順スキャンをサポートするかどうかを示します。ゼロはサポートしないことを意味します。サポートする場合は amorderstrategyが順番の演算子と対応するストラテジルーチンの数になります。例えば、B-tree では amorderstrategy = 1 となっており、これが "より小さい"のストラテジ番号です。