123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- =================================
- PostgreSQL specific model indexes
- =================================
- .. module:: django.contrib.postgres.indexes
- The following are PostgreSQL specific :doc:`indexes </ref/models/indexes>`
- available from the ``django.contrib.postgres.indexes`` module.
- ``BloomIndex``
- ==============
- .. class:: 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
- :class:`~django.contrib.postgres.operations.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.
- .. _bloom: https://www.postgresql.org/docs/current/bloom.html
- ``BrinIndex``
- =============
- .. class:: BrinIndex(*expressions, autosummarize=None, pages_per_range=None, **options)
- Creates a `BRIN index
- <https://www.postgresql.org/docs/current/brin.html>`_.
- Set the ``autosummarize`` parameter to ``True`` to enable `automatic
- summarization`_ to be performed by autovacuum.
- The ``pages_per_range`` argument takes a positive integer.
- .. _automatic summarization: https://www.postgresql.org/docs/current/brin.html#BRIN-OPERATION
- ``BTreeIndex``
- ==============
- .. class:: BTreeIndex(*expressions, fillfactor=None, deduplicate_items=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.
- Provide a boolean value to the deduplicate_items_ parameter to control
- whether deduplication is enabled. PostgreSQL enables deduplication by
- default.
- .. versionchanged:: 5.1
- The ``deduplicate_items`` parameter was added.
- .. _fillfactor: https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-STORAGE-PARAMETERS
- .. _deduplicate_items: https://www.postgresql.org/docs/current/btree-implementation.html#BTREE-DEDUPLICATION
- ``GinIndex``
- ============
- .. class:: GinIndex(*expressions, fastupdate=None, gin_pending_list_limit=None, **options)
- Creates a `gin index <https://www.postgresql.org/docs/current/gin.html>`_.
- To use this index on data types not in the `built-in operator classes
- <https://www.postgresql.org/docs/current/gin-builtin-opclasses.html>`_,
- you need to activate the `btree_gin extension
- <https://www.postgresql.org/docs/current/btree-gin.html>`_ on
- PostgreSQL. You can install it using the
- :class:`~django.contrib.postgres.operations.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 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.
- .. _GIN Fast Update Technique: https://www.postgresql.org/docs/current/gin-implementation.html#GIN-FAST-UPDATE
- .. _gin_pending_list_limit: https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-GIN-PENDING-LIST-LIMIT
- ``GistIndex``
- =============
- .. class:: GistIndex(*expressions, buffering=None, fillfactor=None, **options)
- Creates a `GiST index
- <https://www.postgresql.org/docs/current/gist.html>`_. These indexes are
- automatically created on spatial fields with :attr:`spatial_index=True
- <django.contrib.gis.db.models.BaseSpatialField.spatial_index>`. They're
- also useful on other types, such as
- :class:`~django.contrib.postgres.fields.HStoreField` or the :ref:`range
- fields <range-fields>`.
- To use this index on data types not in the built-in `gist operator classes
- <https://www.postgresql.org/docs/current/gist-builtin-opclasses.html>`_,
- you need to activate the `btree_gist extension
- <https://www.postgresql.org/docs/current/btree-gist.html>`_ on PostgreSQL.
- You can install it using the
- :class:`~django.contrib.postgres.operations.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.
- .. _buffering build: https://www.postgresql.org/docs/current/gist-implementation.html#GIST-BUFFERING-BUILD
- .. _fillfactor: https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-STORAGE-PARAMETERS
- ``HashIndex``
- =============
- .. class:: 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.
- .. _fillfactor: https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-STORAGE-PARAMETERS
- ``SpGistIndex``
- ===============
- .. class:: SpGistIndex(*expressions, fillfactor=None, **options)
- Creates an `SP-GiST index
- <https://www.postgresql.org/docs/current/spgist.html>`_.
- 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.
- .. _fillfactor: https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-STORAGE-PARAMETERS
- ``OpClass()`` expressions
- =========================
- .. class:: OpClass(expression, name)
- An ``OpClass()`` expression represents the ``expression`` 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 your :setting:`INSTALLED_APPS`. Set the
- ``name`` 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')`` 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 ``circle`` using ``circle_ops``.
- .. _operator class: https://www.postgresql.org/docs/current/indexes-opclass.html
|