PostgreSQL 特有模型索引¶
以下是 PostgreSQL 特有的 索引 可以从 django.contrib.postgres.indexes 模块中获得。
BloomIndex¶
-
class
BloomIndex(*expressions, length=None, columns=(), **options)¶ 创建一个 bloom 索引。
要使用这个索引访问,你需要激活 PostgreSQL 上的 bloom 扩展。你可以使用
BloomExtension迁移操作来安装它。为
length参数提供一个从 1 到 4096 的整数位,用于指定每个索引条目的长度。PostgreSQL 的默认值是 80。columns参数取一个元组或最多 32 个值的列表,这些值是 1 到 4095 的整数位。Changed in Django 3.2:增加了位置参数 *expressions,以支持函数索引。
BrinIndex¶
BTreeIndex¶
-
class
BTreeIndex(*expressions, fillfactor=None, **options)¶ 创建一个 B 树索引。
为 fillfactor 参数提供一个从 10 到 100 的整数值,以调整索引页的打包程度。PostgreSQL 的默认值是 90。
Changed in Django 3.2:增加了位置参数 *expressions,以支持函数索引。
GinIndex¶
-
class
GinIndex(*expressions, fastupdate=None, gin_pending_list_limit=None, **options)¶ 创建一个 gin 索引 。
要想在不在 内置运算符类 的数据类型上使用这个索引,需要在 PostgreSQL 上激活 btree_gin 扩展 。你可以使用
BtreeGinExtension迁移操作来安装它。将
fastupdate参数设置为False,以禁用 PostgreSQL 中默认启用的 GIN 快速更新技术 。为 gin_pending_list_limit 参数提供一个整数字节数,以调整 GIN 待定列表的最大大小,当
fastupdate启用时使用。Changed in Django 3.2:增加了位置参数 *expressions,以支持函数索引。
GistIndex¶
-
class
GistIndex(*expressions, buffering=None, fillfactor=None, **options)¶ 创建一个 GiST 索引 。这些索引在空间字段上会自动创建
spatial_index=True。它们在其他类型上也很有用,比如HStoreField或者 range fields。要在不在内置的 gist 操作类 的数据类型上使用这个索引,需要在 PostgreSQL 上激活 btree_gist 扩展 。你可以使用
BtreeGistExtension迁移操作来安装它。将
buffering参数设置为True或False,手动启用或禁用索引的 buffering build 。为 fillfactor 参数提供一个从 10 到 100 的整数值,以调整索引页的打包程度。PostgreSQL 的默认值是 90。
Changed in Django 3.2:增加了位置参数 *expressions,以支持函数索引。
HashIndex¶
-
class
HashIndex(*expressions, fillfactor=None, **options)¶ 创建一个哈希索引。
为 fillfactor 参数提供一个从 10 到 100 的整数值,以调整索引页的打包程度。PostgreSQL 的默认值是 90。
只在 PostgreSQL 10 及以后的版本中使用此索引。
哈希索引在 PostgreSQL 中已经存在很长时间了,但在旧版本中,哈希索引存在一些数据完整性问题。
Changed in Django 3.2:增加了位置参数 *expressions,以支持函数索引。
SpGistIndex¶
-
class
SpGistIndex(*expressions, fillfactor=None, **options)¶ 创建 SP-GIST 索引 。
为 fillfactor 参数提供一个从 10 到 100 的整数值,以调整索引页的打包程度。PostgreSQL 的默认值是 90。
Changed in Django 3.2:增加了位置参数 *expressions,以支持函数索引。
OpClass() 表达式¶
-
class
OpClass(expression, name)¶ 一个
OpClass()表达式代表了具有自定义 operator class 的expression,可用于定义函数索引或唯一约束。要使用它,你需要在你的INSTALLED_APPS中添加'django.contrib.postgres'。将name参数设置为 operator class 的名称。例子:
Index( OpClass(Lower('username'), name='varchar_pattern_ops'), name='lower_username_idx', )
使用
varchar_pattern_ops为Lower('username')创建索引。另一个例子:
UniqueConstraint( OpClass(Upper('description'), name='text_pattern_ops'), name='upper_description_unique', )
使用
text_pattern_ops在Upper('description')上创建一个唯一约束。Changed in Django 4.0:增加了对函数唯一约束的支持。