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 - BloomExtensionmigration operation.- Provide an integer number of bits from 1 to 4096 to the - lengthparameter to specify the length of each index entry. PostgreSQL’s default is 80.- The - columnsargument 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 - autosummarizeparameter to- Trueto enable automatic summarization to be performed by autovacuum.- The - pages_per_rangeargument takes a positive integer.
BTreeIndex¶
- class BTreeIndex(*expressions, fillfactor=None, deduplicate_items=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. - Provide a boolean value to the deduplicate_items parameter to control whether deduplication is enabled. PostgreSQL enables deduplication by default. Changed in Django 5.1:- The - deduplicate_itemsparameter was added.
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 - BtreeGinExtensionmigration operation.- Set the - fastupdateparameter to- Falseto 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 - fastupdateis 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 as- HStoreFieldor 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 - BtreeGistExtensionmigration operation.- Set the - bufferingparameter to- Trueor- Falseto 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. 
OpClass() expressions¶
- class OpClass(expression, name)[source]¶
- An - OpClass()expression represents the- expressionwith 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 your- INSTALLED_APPS. Set the- nameparameter 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')using- varchar_pattern_ops.- UniqueConstraint( OpClass(Upper("description"), name="text_pattern_ops"), name="upper_description_unique", ) - creates a unique constraint on - Upper('description')using- text_pattern_ops.- ExclusionConstraint( name="exclude_overlapping_ops", expressions=[ (OpClass("circle", name="circle_ops"), RangeOperators.OVERLAPS), ], ) - creates an exclusion constraint on - circleusing- circle_ops.
 
          