Встроенные классы операторов#

В основной дистрибутив PostgreSQL входят классы операторов BRIN, показанные в таблице ниже.

Классы оператора minmax хранят минимальное и максимальное значения, встречающиеся в индексированном столбце в пределах диапазона. Классы оператора inclusion хранят значение, которое включает значения в индексированном столбце в пределах диапазона. Классы оператора bloom строят фильтр Блума для всех значений в диапазоне. Классы операторов minmax-multi хранят несколько минимальных и максимальных значений, представляющих значения, появляющиеся в индексированном столбце в пределах диапазона.

name

Индексируемые операторы

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_цветка_опса

= (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)

Параметры класса операторов#

Некоторые из встроенных классов операторов позволяют задавать параметры, влияющие на поведение класса оператора. Каждый класс операторов имеет свой набор допустимых параметров. Только классы операторов bloom и minmax-multi позволяют указывать параметры:

Классы операторов bloom принимают эти параметры:

n_distinct_per_range

Определяет предполагаемое количество отдельных ненулевых значений в диапазоне блоков, используемых индексами BRIN bloom для определения размера фильтра Bloom. Действует аналогично параметру n_distinct для ALTER TABLE. При положительном значении предполагается, что каждый диапазон блоков содержит это количество отдельных ненулевых значений. При установке отрицательного значения, которое должно быть больше или равно -1, предполагается, что количество отдельных ненулевых значений будет расти линейно с максимально возможным количеством кортежей в диапазоне блоков (около 290 строк на блок). Значение по умолчанию равно -0.1, а минимальное количество отдельных ненулевых значений равно 16.

false_positive_rate

Определяет желаемый коэффициент ложных срабатываний, используемый индексами BRIN bloom для определения размера фильтра Блума. Значение должно находиться в диапазоне от 0,0001 до 0,25. Значение по умолчанию - 0,01, что составляет 1 % ложных срабатываний.

Классы операторов minmax-multi принимают эти параметры:

values_per_range

Определяет максимальное количество значений, хранимых индексами BRIN minmax для обобщения диапазона блоков. Каждое значение может представлять собой либо точку, либо границу интервала. Значения должны быть в диапазоне от 8 до 256, по умолчанию – 32.