PostgreSQL 特定模型索引

以下是 django.contrib.postgres.indexes 模块提供的 PostgreSQL 特定索引

BloomIndex

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

创建bloom索引。

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

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

columns参数接受一个元组或列表,最多包含 32 个值,这些值是从 1 到 4095 的整数位数。

BrinIndex

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

创建BRIN 索引

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

pages_per_range参数接受一个正整数。

BTreeIndex

class BTreeIndex(*expressions, fillfactor=None, deduplicate_items=None, **options)[source]

创建 B 树索引。

fillfactor参数提供一个从 10 到 100 的整数值,以调整索引页面的填充密度。PostgreSQL 的默认值为 90。

deduplicate_items参数提供一个布尔值,以控制是否启用重复数据删除。PostgreSQL 默认启用重复数据删除。

Django 5.1 中的更改

添加了deduplicate_items参数。

GinIndex

class GinIndex(*expressions, fastupdate=None, gin_pending_list_limit=None, **options)[source]

创建gin 索引

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

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

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

GistIndex

class GistIndex(*expressions, buffering=None, fillfactor=None, **options)[source]

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

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

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

fillfactor参数提供一个从 10 到 100 的整数值,以调整索引页面的填充密度。PostgreSQL 的默认值为 90。

HashIndex

class HashIndex(*expressions, fillfactor=None, **options)[source]

创建哈希索引。

fillfactor参数提供一个从 10 到 100 的整数值,以调整索引页面的填充密度。PostgreSQL 的默认值为 90。

SpGistIndex

class SpGistIndex(*expressions, fillfactor=None, **options)[source]

创建SP-GiST 索引

fillfactor参数提供一个从 10 到 100 的整数值,以调整索引页面的填充密度。PostgreSQL 的默认值为 90。

OpClass() 表达式

class OpClass(expression, name)[source]

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

例如

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

Lower('username')上使用varchar_pattern_ops创建索引。

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

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

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

circle上使用circle_ops创建排除约束。

返回顶部