The following are PostgreSQL specific indexes
available from the django.contrib.postgres.indexes
module.
BloomIndex
¶BloomIndex
(*expressions, length=None, columns=(), **options)¶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.
Positional argument *expressions
was added in order to support
functional indexes.
BrinIndex
¶BrinIndex
(*expressions, autosummarize=None, pages_per_range=None, **options)¶Creates a BRIN index.
Set the autosummarize
parameter to True
to enable automatic
summarization to be performed by autovacuum.
The pages_per_range
argument takes a positive integer.
Positional argument *expressions
was added in order to support
functional indexes.
BTreeIndex
¶BTreeIndex
(*expressions, fillfactor=None, **options)¶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.
Positional argument *expressions
was added in order to support
functional indexes.
GinIndex
¶GinIndex
(*expressions, fastupdate=None, gin_pending_list_limit=None, **options)¶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 to False
to disable the GIN Fast
Update Technique that's enabled by default in PostgreSQL.
Provide an integer number of bytes to the gin_pending_list_limit parameter
to tune the maximum size of the GIN pending list which is used when
fastupdate
is enabled.
Positional argument *expressions
was added in order to support
functional indexes.
GistIndex
¶GistIndex
(*expressions, buffering=None, fillfactor=None, **options)¶Creates a GiST index. These indexes are
automatically created on spatial fields with spatial_index=True
. They're
also useful on other types, such as
HStoreField
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 to True
or False
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.
Positional argument *expressions
was added in order to support
functional indexes.
HashIndex
¶HashIndex
(*expressions, fillfactor=None, **options)¶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.
Use this index only on PostgreSQL 10 and later
Hash indexes have been available in PostgreSQL for a long time, but they suffer from a number of data integrity issues in older versions.
Positional argument *expressions
was added in order to support
functional indexes.
SpGistIndex
¶SpGistIndex
(*expressions, fillfactor=None, **options)¶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.
Positional argument *expressions
was added in order to support
functional indexes.
OpClass()
expressions¶OpClass
(expression, name)¶An OpClass()
expression represents the expression
with a custom
operator class that can be used to define functional indexes or unique
constraints. To use it, you need to add 'django.contrib.postgres'
in
your INSTALLED_APPS
. Set the name
parameter to the name of
the operator class.
例:
Index(
OpClass(Lower('username'), name='varchar_pattern_ops'),
name='lower_username_idx',
)
creates an index on Lower('username')
using varchar_pattern_ops
.
Another example:
UniqueConstraint(
OpClass(Upper('description'), name='text_pattern_ops'),
name='upper_description_unique',
)
creates a unique constraint on Upper('description')
using
text_pattern_ops
.
Support for functional unique constraints was added.
2022年6月01日