Встроенные классы операторов
Эта страница переведена при помощи нейросети GigaChat.
В основной дистрибутив 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.