Documentation PostgreSQL 14.22 » Internes » Index BRIN » Classes d'opérateur intégrées

Précédent | Niveau supérieur | Suivant
68.1. Introduction | Sommaire | 68.3. Extensibilité

## 68.2. Classes d'opérateur intégrées

La distribution du noyau PostgreSQL inclut la classe d'opérateur BRIN montrée dans Tableau 68.1.

La classe d'opérateur minmax stocke les valeurs minimale et maximale apparaissant dans l'intervalle de la colonne indexée. L'opérateur de classe inclusion stocke une valeur qui est incluse dans les valeurs contenues dans l'intervalle de la colonne indexée. Les classes d'opérateur bloom génèrent un filtre Bloom pour toutes les valeurs dans l'intervalle. Les classes d'opérateur minmax-multi conservent les multiples valeurs minimale et maximale, représentant les valeurs apparaissant dans la colonne indexée dans l'intervalle.

Tableau 68.1. Classe d'opérateur BRIN intégrée

Nom | Opérateurs indexables
--- | ---
`bit_minmax_ops` | `= (bit,bit)`
`< (bit,bit)`
`> (bit,bit)`
`<= (bit,bit)`
`>= (bit,bit)`
`box_inclusion_ops` | `@> (box,point)`
`<< (box,box)`
`&< (box,box)`
`&> (box,box)`
`>> (box,box)`
`<@ (box,box)`
`@> (box,box)`
`~= (box,box)`
`&& (box,box)`
`<<| (box,box)`
`&<| (box,box)`
`|&> (box,box)`
`|>> (box,box)`
`bpchar_bloom_ops` | `= (character,character)`
`bpchar_minmax_ops` | `= (character,character)`
`< (character,character)`
`<= (character,character)`
`> (character,character)`
`>= (character,character)`
`bytea_bloom_ops` | `= (bytea,bytea)`
`bytea_minmax_ops` | `= (bytea,bytea)`
`< (bytea,bytea)`
`<= (bytea,bytea)`
`> (bytea,bytea)`
`>= (bytea,bytea)`
`char_bloom_ops` | `= ("char","char")`
`char_minmax_ops` | `= ("char","char")`
`< ("char","char")`
`<= ("char","char")`
`> ("char","char")`
`>= ("char","char")`
`date_bloom_ops` | `= (date,date)`
`date_minmax_ops` | `= (date,date)`
`< (date,date)`
`<= (date,date)`
`> (date,date)`
`>= (date,date)`
`date_minmax_multi_ops` | `= (date,date)`
`< (date,date)`
`<= (date,date)`
`> (date,date)`
`>= (date,date)`
`float4_bloom_ops` | `= (float4,float4)`
`float4_minmax_ops` | `= (float4,float4)`
`< (float4,float4)`
`> (float4,float4)`
`<= (float4,float4)`
`>= (float4,float4)`
`float4_minmax_multi_ops` | `= (float4,float4)`
`< (float4,float4)`
`> (float4,float4)`
`<= (float4,float4)`
`>= (float4,float4)`
`float8_bloom_ops` | `= (float8,float8)`
`float8_minmax_ops` | `= (float8,float8)`
`< (float8,float8)`
`<= (float8,float8)`
`> (float8,float8)`
`>= (float8,float8)`
`float8_minmax_multi_ops` | `= (float8,float8)`
`< (float8,float8)`
`<= (float8,float8)`
`> (float8,float8)`
`>= (float8,float8)`
`inet_inclusion_ops` | `<< (inet,inet)`
`<<= (inet,inet)`
`>> (inet,inet)`
`>>= (inet,inet)`
`= (inet,inet)`
`&& (inet,inet)`
`inet_bloom_ops` | `= (inet,inet)`
`inet_minmax_ops` | `= (inet,inet)`
`< (inet,inet)`
`<= (inet,inet)`
`> (inet,inet)`
`>= (inet,inet)`
`inet_minmax_multi_ops` | `= (inet,inet)`
`< (inet,inet)`
`<= (inet,inet)`
`> (inet,inet)`
`>= (inet,inet)`
`int2_bloom_ops` | `= (int2,int2)`
`int2_minmax_ops` | `= (int2,int2)`
`< (int2,int2)`
`> (int2,int2)`
`<= (int2,int2)`
`>= (int2,int2)`
`int2_minmax_multi_ops` | `= (int2,int2)`
`< (int2,int2)`
`> (int2,int2)`
`<= (int2,int2)`
`>= (int2,int2)`
`int4_bloom_ops` | `= (int4,int4)`
`int4_minmax_ops` | `= (int4,int4)`
`< (int4,int4)`
`> (int4,int4)`
`<= (int4,int4)`
`>= (int4,int4)`
`int4_minmax_multi_ops` | `= (int4,int4)`
`< (int4,int4)`
`> (int4,int4)`
`<= (int4,int4)`
`>= (int4,int4)`
`int8_bloom_ops` | `= (bigint,bigint)`
`int8_minmax_ops` | `= (bigint,bigint)`
`< (bigint,bigint)`
`> (bigint,bigint)`
`<= (bigint,bigint)`
`>= (bigint,bigint)`
`int8_minmax_multi_ops` | `= (bigint,bigint)`
`< (bigint,bigint)`
`> (bigint,bigint)`
`<= (bigint,bigint)`
`>= (bigint,bigint)`
`interval_bloom_ops` | `= (interval,interval)`
`interval_minmax_ops` | `= (interval,interval)`
`< (interval,interval)`
`<= (interval,interval)`
`> (interval,interval)`
`>= (interval,interval)`
`interval_minmax_multi_ops` | `= (interval,interval)`
`< (interval,interval)`
`<= (interval,interval)`
`> (interval,interval)`
`>= (interval,interval)`
`macaddr_bloom_ops` | `= (macaddr,macaddr)`
`macaddr_minmax_ops` | `= (macaddr,macaddr)`
`< (macaddr,macaddr)`
`<= (macaddr,macaddr)`
`> (macaddr,macaddr)`
`>= (macaddr,macaddr)`
`macaddr_minmax_multi_ops` | `= (macaddr,macaddr)`
`< (macaddr,macaddr)`
`<= (macaddr,macaddr)`
`> (macaddr,macaddr)`
`>= (macaddr,macaddr)`
`macaddr8_bloom_ops` | `= (macaddr8,macaddr8)`
`macaddr8_minmax_ops` | `= (macaddr8,macaddr8)`
`< (macaddr8,macaddr8)`
`<= (macaddr8,macaddr8)`
`> (macaddr8,macaddr8)`
`>= (macaddr8,macaddr8)`
`macaddr8_minmax_multi_ops` | `= (macaddr8,macaddr8)`
`< (macaddr8,macaddr8)`
`<= (macaddr8,macaddr8)`
`> (macaddr8,macaddr8)`
`>= (macaddr8,macaddr8)`
`name_bloom_ops` | `= (name,name)`
`name_minmax_ops` | `= (name,name)`
`< (name,name)`
`<= (name,name)`
`> (name,name)`
`>= (name,name)`
`numeric_bloom_ops` | `= (numeric,numeric)`
`numeric_minmax_ops` | `= (numeric,numeric)`
`< (numeric,numeric)`
`<= (numeric,numeric)`
`> (numeric,numeric)`
`>= (numeric,numeric)`
`numeric_minmax_multi_ops` | `= (numeric,numeric)`
`< (numeric,numeric)`
`<= (numeric,numeric)`
`> (numeric,numeric)`
`>= (numeric,numeric)`
`oid_bloom_ops` | `= (oid,oid)`
`oid_minmax_ops` | `= (oid,oid)`
`< (oid,oid)`
`> (oid,oid)`
`<= (oid,oid)`
`>= (oid,oid)`
`oid_minmax_multi_ops` | `= (oid,oid)`
`< (oid,oid)`
`> (oid,oid)`
`<= (oid,oid)`
`>= (oid,oid)`
`pg_lsn_bloom_ops` | `= (pg_lsn,pg_lsn)`
`pg_lsn_minmax_ops` | `= (pg_lsn,pg_lsn)`
`< (pg_lsn,pg_lsn)`
`> (pg_lsn,pg_lsn)`
`<= (pg_lsn,pg_lsn)`
`>= (pg_lsn,pg_lsn)`
`pg_lsn_minmax_multi_ops` | `= (pg_lsn,pg_lsn)`
`< (pg_lsn,pg_lsn)`
`> (pg_lsn,pg_lsn)`
`<= (pg_lsn,pg_lsn)`
`>= (pg_lsn,pg_lsn)`
`range_inclusion_ops` | `= (anyrange,anyrange)`
`< (anyrange,anyrange)`
`<= (anyrange,anyrange)`
`>= (anyrange,anyrange)`
`> (anyrange,anyrange)`
`&& (anyrange,anyrange)`
`@> (anyrange,anyelement)`
`@> (anyrange,anyrange)`
`<@ (anyrange,anyrange)`
`<< (anyrange,anyrange)`
`>> (anyrange,anyrange)`
`&< (anyrange,anyrange)`
`&> (anyrange,anyrange)`
`-|- (anyrange,anyrange)`
`text_bloom_ops` | `= (text,text)`
`text_minmax_ops` | `= (text,text)`
`< (text,text)`
`<= (text,text)`
`> (text,text)`
`>= (text,text)`
`tid_bloom_ops` | `= (tid,tid)`
`tid_minmax_ops` | `= (tid,tid)`
`< (tid,tid)`
`> (tid,tid)`
`<= (tid,tid)`
`>= (tid,tid)`
`tid_minmax_multi_ops` | `= (tid,tid)`
`< (tid,tid)`
`> (tid,tid)`
`<= (tid,tid)`
`>= (tid,tid)`
`timestamp_bloom_ops` | `= (timestamp,timestamp)`
`timestamp_minmax_ops` | `= (timestamp,timestamp)`
`< (timestamp,timestamp)`
`<= (timestamp,timestamp)`
`> (timestamp,timestamp)`
`>= (timestamp,timestamp)`
`timestamp_minmax_multi_ops` | `= (timestamp,timestamp)`
`< (timestamp,timestamp)`
`<= (timestamp,timestamp)`
`> (timestamp,timestamp)`
`>= (timestamp,timestamp)`
`timestamptz_bloom_ops` | `= (timestamptz,timestamptz)`
`timestamptz_minmax_ops` | `= (timestamptz,timestamptz)`
`< (timestamptz,timestamptz)`
`<= (timestamptz,timestamptz)`
`> (timestamptz,timestamptz)`
`>= (timestamptz,timestamptz)`
`timestamptz_minmax_multi_ops` | `= (timestamptz,timestamptz)`
`< (timestamptz,timestamptz)`
`<= (timestamptz,timestamptz)`
`> (timestamptz,timestamptz)`
`>= (timestamptz,timestamptz)`
`time_bloom_ops` | `= (time,time)`
`time_minmax_ops` | `= (time,time)`
`< (time,time)`
`<= (time,time)`
`> (time,time)`
`>= (time,time)`
`time_minmax_multi_ops` | `= (time,time)`
`< (time,time)`
`<= (time,time)`
`> (time,time)`
`>= (time,time)`
`timetz_bloom_ops` | `= (timetz,timetz)`
`timetz_minmax_ops` | `= (timetz,timetz)`
`< (timetz,timetz)`
`<= (timetz,timetz)`
`> (timetz,timetz)`
`>= (timetz,timetz)`
`timetz_minmax_multi_ops` | `= (timetz,timetz)`
`< (timetz,timetz)`
`<= (timetz,timetz)`
`> (timetz,timetz)`
`>= (timetz,timetz)`
`uuid_bloom_ops` | `= (uuid,uuid)`
`uuid_minmax_ops` | `= (uuid,uuid)`
`< (uuid,uuid)`
`> (uuid,uuid)`
`<= (uuid,uuid)`
`>= (uuid,uuid)`
`uuid_minmax_multi_ops` | `= (uuid,uuid)`
`< (uuid,uuid)`
`> (uuid,uuid)`
`<= (uuid,uuid)`
`>= (uuid,uuid)`
`varbit_minmax_ops` | `= (varbit,varbit)`
`< (varbit,varbit)`
`> (varbit,varbit)`
`<= (varbit,varbit)`
`>= (varbit,varbit)`

### 68.2.1. Paramètres de classe d'opérateur

Certaines des classes d'opérateur intégrées permettent aux paramétres spécifiés d'affecter leurs comportements. Chaque opérateur de classe a son propre ensemble de paramètres autorisés. Seules les classes d'opérateur `bloom` et `minmax-multi` permettent de spécifier ces paramètres :

Les classes d'opérateur bloom acceptent ces paramètres :

`n_distinct_per_range`

  Définit le nombre estimé de valeurs non NULL distinctes dans un intervalle de blocs, utilisé par les index bloom BRIN pour dimensionner le filtre Bloom. Il se comporte similairement à l'option `n_distinct` pour ALTER TABLE. Quand la valeur affectée est positive, il est supposé que chaque intervalle de blocs contient ce nombre de valeurs non NULL distinctes. Quand la valeur affectée est négative mais supérieure ou égale à -1, il est supposé que le nombre de valeurs non NULL distinctes croît linéairement avec le nombre maximum possible de lignes dans l'intervalle de blocs(environ 290 lignes par bloc). La valeur par défaut est `-0,1`, et le nombre minimum de valeurs distinctes non NULL est `16`.

`false_positive_rate`

  Définit le taux désiré de faux positifs utilisé par les index bloom BRIN pour dimensionner le filtre Bloom. La valeur doit être comprise entre 0,0001 et 0,25. La valeur par défaut est 0,01, ce qui correspond à 1% pour le taux de faux positifs.

Les classes d'opérateurs minmax-multi accepte ces paramètres :

`values_per_range`

  Définit le nombre maximum de valeurs conservées par les index minmax BRIN pour résumer un intervalle de blocs. Chaque valeur peut représenter un point, ou une limite d'un intervalle. La valeur doit être comprise entre 8 et 256, et la valeur par défaut est 32.