btree_gin
fournit des échantillons de classes d'opérateurs
GIN qui codent un comportement équivalent à un B-tree pour les types
int2
, int4
, int8
, float4
,
float8
, timestamp with time zone
,
timestamp without time zone
, time with time zone
,
time without time zone
, date
, interval
,
oid
, money
, "char"
,
varchar
, text
, bytea
, bit
,
varbit
, macaddr
, macaddr8
,
inet
, cidr
, uuid
, name
,
bool
, bpchar
et tous les types enum
.
En général, ces classes d'opérateurs ne sont pas plus rapides que les méthodes standard d'indexation B-tree équivalentes, et il leur manque une fonctionnalité majeure du code B-tree standard : la capacité à forcer l'unicité. Toutefois, elles sont utiles pour tester GIN et comme base pour développer d'autres classes d'opérateurs GIN. Par ailleurs, pour des requêtes qui testent à la fois une colonnne indexable via GIN et une colonne indexable par B-tree, il peut être plus efficace de créer un index GIN multicolonne qui utilise une de ces classes d'opérateurs que de créer deux index séparés qui devront être combinés par une opération de bitmap ET.
CREATE TABLE test (a int4); -- crée l'index CREATE INDEX testidx ON test USING GIN (a); -- requête SELECT * FROM test WHERE a < 10;
Teodor Sigaev (<teodor@stack.net>
) et Oleg Bartunov
(<oleg@sai.msu.su>
). Voir http://www.sai.msu.su/~megera/oddmuse/index.cgi/Gin pour plus
d'informations.