PostgreSQL 特定的模型索引

以下是从 django.contrib.postgres.indexes 模块中获取的 PostgreSQL 特定的 索引

BloomIndex

class BloomIndex(*expressions, length=None, columns=(), **options)

创建 bloom 索引。

要使用此索引访问,您需要在 PostgreSQL 上激活 bloom 扩展。您可以使用 BloomExtension 迁移操作进行安装。

length 参数提供 1 到 4096 之间的整数位数,以指定每个索引项的长度。PostgreSQL 的默认值为 80。

columns 参数采用一个元组或列表,其中最多包含 32 个值,这些值是 1 到 4095 之间的整数位数。

BrinIndex

class BrinIndex(*expressions, autosummarize=None, pages_per_range=None, **options)

创建一个 BRIN 索引

autosummarize 参数设置为 True 以启用自动清理执行的 自动汇总

pages_per_range 参数采用一个正整数。

BTreeIndex

BTreeIndex(*表达式, 填充因子=, **选项)

创建一个 B 树索引。

填充因子 参数提供一个 10 到 100 之间的整数,以调整索引页面的填充程度。PostgreSQL 的默认值为 90。

GinIndex

GinIndex(*表达式, 快速更新=, gin 挂起列表限制=, **选项)

创建一个 gin 索引

要在不属于 内置运算符类 中的数据类型上使用此索引,需要在 PostgreSQL 上激活 btree_gin 扩展。可以使用 BtreeGinExtension 迁移操作进行安装。

fastupdate 参数设置为 False 以禁用 PostgreSQL 中默认启用的 GIN 快速更新技术

gin_pending_list_limit 参数提供一个以千字节为单位的整数,以调整当 fastupdate 启用时使用的 GIN 挂起列表的最大大小。

GistIndex

GistIndex(*表达式, 缓冲=, 填充因子=, **选项)

创建一个 GiST 索引。这些索引会在空间字段上使用 spatial_index=True 自动创建。它们在其他类型上也很有用,例如 HStoreField范围字段

要在内置 gist 运算符类 中没有的数据类型上使用此索引,您需要在 PostgreSQL 上激活 btree_gist 扩展。您可以使用 BtreeGistExtension 迁移操作来安装它。

buffering 参数设置为 TrueFalse 以手动启用或禁用索引的 缓冲构建

填充因子 参数提供一个 10 到 100 之间的整数,以调整索引页面的填充程度。PostgreSQL 的默认值为 90。

HashIndex

HashIndex(*表达式, 填充因子=, **选项)

创建一个哈希索引。

填充因子 参数提供一个 10 到 100 之间的整数,以调整索引页面的填充程度。PostgreSQL 的默认值为 90。

SpGistIndex

class SpGistIndex(*expressions, fillfactor=None, **options)

创建一个 SP-GiST 索引

填充因子 参数提供一个 10 到 100 之间的整数,以调整索引页面的填充程度。PostgreSQL 的默认值为 90。

OpClass() 表达式

class OpClass(expression, name)

一个 OpClass() 表达式表示具有自定义 运算符类expression,该运算符类可用于定义函数索引、函数唯一约束或排除约束。要使用它,您需要在 INSTALLED_APPS 中添加 'django.contrib.postgres'。将 name 参数设置为 运算符类 的名称。

例如

Index(
    OpClass(Lower("username"), name="varchar_pattern_ops"),
    name="lower_username_idx",
)

使用 varchar_pattern_opsLower('username') 上创建一个索引。

UniqueConstraint(
    OpClass(Upper("description"), name="text_pattern_ops"),
    name="upper_description_unique",
)

使用 text_pattern_opsUpper('description') 上创建唯一约束。

ExclusionConstraint(
    name="exclude_overlapping_ops",
    expressions=[
        (OpClass("circle", name="circle_ops"), RangeOperators.OVERLAPS),
    ],
)

使用 circle_opscircle 上创建排除约束。

返回顶部