PostgreSQL specific model indexes¶
The following are PostgreSQL specific indexes
available from the django.contrib.postgres.indexes
module.
BloomIndex
¶
-
class
BloomIndex
(*expressions, length=None, columns=(), **options)[source]¶ Creates a bloom index.
To use this index access you need to activate the bloom extension on PostgreSQL. You can install it using the
BloomExtension
migration operation.Provide an integer number of bits from 1 to 4096 to the
length
parameter to specify the length of each index entry. PostgreSQL’s default is 80.The
columns
argument takes a tuple or list of up to 32 values that are integer number of bits from 1 to 4095.
BrinIndex
¶
-
class
BrinIndex
(*expressions, autosummarize=None, pages_per_range=None, **options)[source]¶ Creates a BRIN index.
Set the
autosummarize
parameter toTrue
to enable automatic summarization to be performed by autovacuum.The
pages_per_range
argument takes a positive integer.
BTreeIndex
¶
-
class
BTreeIndex
(*expressions, fillfactor=None, **options)[source]¶ Creates a B-Tree index.
Provide an integer value from 10 to 100 to the fillfactor parameter to tune how packed the index pages will be. PostgreSQL’s default is 90.
GinIndex
¶
-
class
GinIndex
(*expressions, fastupdate=None, gin_pending_list_limit=None, **options)[source]¶ Creates a gin index.
To use this index on data types not in the built-in operator classes, you need to activate the btree_gin extension on PostgreSQL. You can install it using the
BtreeGinExtension
migration operation.Set the
fastupdate
parameter toFalse
to disable the GIN Fast Update Technique that’s enabled by default in PostgreSQL.Provide an integer number of kilobytes to the gin_pending_list_limit parameter to tune the maximum size of the GIN pending list which is used when
fastupdate
is enabled.
GistIndex
¶
-
class
GistIndex
(*expressions, buffering=None, fillfactor=None, **options)[source]¶ Creates a GiST index. These indexes are automatically created on spatial fields with
spatial_index=True
. They’re also useful on other types, such asHStoreField
or the range fields.To use this index on data types not in the built-in gist operator classes, you need to activate the btree_gist extension on PostgreSQL. You can install it using the
BtreeGistExtension
migration operation.Set the
buffering
parameter toTrue
orFalse
to manually enable or disable buffering build of the index.Provide an integer value from 10 to 100 to the fillfactor parameter to tune how packed the index pages will be. PostgreSQL’s default is 90.
HashIndex
¶
-
class
HashIndex
(*expressions, fillfactor=None, **options)[source]¶ Creates a hash index.
Provide an integer value from 10 to 100 to the fillfactor parameter to tune how packed the index pages will be. PostgreSQL’s default is 90.
SpGistIndex
¶
-
class
SpGistIndex
(*expressions, fillfactor=None, **options)[source]¶ Creates an SP-GiST index.
Provide an integer value from 10 to 100 to the fillfactor parameter to tune how packed the index pages will be. PostgreSQL’s default is 90.
Changed in Django Development version:Support for covering SP-GiST indexes on PostgreSQL 14+ was added.
OpClass()
expressions¶
-
class
OpClass
(expression, name)[source]¶ An
OpClass()
expression represents theexpression
with a custom operator class that can be used to define functional indexes, functional unique constraints, or exclusion constraints. To use it, you need to add'django.contrib.postgres'
in yourINSTALLED_APPS
. Set thename
parameter to the name of the operator class.For example:
Index( OpClass(Lower('username'), name='varchar_pattern_ops'), name='lower_username_idx', )
creates an index on
Lower('username')
usingvarchar_pattern_ops
.UniqueConstraint( OpClass(Upper('description'), name='text_pattern_ops'), name='upper_description_unique', )
creates a unique constraint on
Upper('description')
usingtext_pattern_ops
.ExclusionConstraint( name='exclude_overlapping_ops', expressions=[ (OpClass('circle', name='circle_ops'), RangeOperators.OVERLAPS), ], )
creates an exclusion constraint on
circle
usingcircle_ops
.Changed in Django Development version:Support for exclusion constraints was added.