Postgresql 中文操作指南

71.2. Built-in Operator Classes #

PostgreSQL 核心发行版包括 Table 71.1中所示的 BRIN 运算符类。

minmax 运算符类存储了在范围中出现在索引列中的最小值和最大值。inclusion 运算符类存储了一个值,该值包括了在范围中出现在索引列内的值。bloom 运算符类为范围内的所有值构建一个布隆过滤器。minmax-multi 运算符类存储多个最小值和最大值,表示在范围中出现在索引列内的值。

Table 71.1. Built-in BRIN Operator Classes

Name

Indexable Operators

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)

71.2.1. Operator Class Parameters #

某些内置运算符类别允许指定影响运算符类别行为的参数。每个运算符类别都有其自己的一组允许的参数。只有 bloomminmax-multi 运算符类别允许指定参数:

bloom 运算符类别接受以下参数:

  • n_distinct_per_range

    • 定义 BRIN 布隆索引用于调整布隆过滤器的估计唯一非空值的数目。它与 ALTER TABLEn_distinct 选项的工作方式相似。将该值设为正值时,将假定每个块范围都包含此数量的唯一非空值。将该值设为负值时,该值必须大于或等于 -1,将假定唯一非空值的数目随着块范围中元组的最大可能数目呈线性增长(每个块大约有 290 行)。默认值是 -0.1 ,唯一非空值的最小数目是 16

  • false_positive_rate

    • 定义 BRIN bloom 索引用来调整 Bloom 过滤器的期望误报率。值必须在 0.0001 和 0.25 之间。默认值为 0.01,即 1% 的误报率。

minmax-multi 运算符类别接受以下参数:

  • values_per_range

    • 定义 BRIN minmax 索引用来汇总块范围时存储的最大值数量。每个值可能代表一个点,或者一个区间的边界。值必须在 8 和 256 之间,默认值为 32。