• 3.1
  • 3.2
  • 6.1
  • Версия документации: 5.0

Индексы конкретной модели PostgreSQL

Ниже приведены специфичные для PostgreSQL индексы, доступные в модуле django.contrib.postgres.indexes.

БлумИндекс

class BloomIndex(*expressions, length=None, columns=(), **options)

Создает индекс Bloom.

Чтобы использовать этот доступ к индексу, вам необходимо активировать расширение Bloom в PostgreSQL. Вы можете установить его с помощью операции миграции BloomExtension.

Укажите целое число бит от 1 до 4096 в параметре length, чтобы указать длину каждой записи индекса. По умолчанию PostgreSQL — 80.

Аргумент Columns принимает кортеж или список, содержащий до 32 значений, которые представляют собой целое число бит от 1 до 4095.

БринИндекс

class BrinIndex(*expressions, autosummarize=None, pages_per_range=None, **options)

Создает BRIN-индекс.

Установите для параметра autosummarize значение True, чтобы включить автоматическое суммирование с помощью автоочистки.

Аргумент «pages_per_range» принимает положительное целое число.

BTreeIndex

class BTreeIndex(*expressions, fillfactor=None, deduplicate_items=None, **options)

Создает индекс B-дерева.

Укажите целое значение от 10 до 100 для параметра fillfactor, чтобы настроить степень упаковки страниц индекса. Значение по умолчанию в PostgreSQL — 90.

Укажите логическое значение для параметра deduulate_items, чтобы контролировать, включена ли дедупликация. PostgreSQL по умолчанию включает дедупликацию.

Changed in Django 5.1:

Добавлен параметр deduplate_items.

ДжинИндекс

class GinIndex(*expressions, fastupdate=None, gin_pending_list_limit=None, **options)

Создает gin index.

Чтобы использовать этот индекс для типов данных, не входящих во встроенные классы операторов, вам необходимо активировать расширение btree_gin в PostgreSQL. Вы можете установить его с помощью операции миграции BtreeGinExtension.

Установите для параметра fastupdate значение False, чтобы отключить метод быстрого обновления GIN, который включен по умолчанию в PostgreSQL.

Укажите целое число килобайт в параметре gin_pending_list_limit, чтобы настроить максимальный размер списка ожидающих выполнения GIN, который используется, когда включен fastupdate.

GistIndex

class GistIndex(*expressions, buffering=None, fillfactor=None, **options)

Создает индекс GiST <https://www.postgresql.org/docs/current/gist.html>_. Эти индексы автоматически создаются для пространственных полей с помощью spatial_index=True. Они также полезны для других типов, таких как HStoreField или поля диапазона.

Чтобы использовать этот индекс для типов данных, не входящих во встроенные классы операторов gist, вам необходимо активировать расширение btree_gist в PostgreSQL. Вы можете установить его с помощью операции миграции BtreeGistExtension.

Установите для параметра buffering значение True или False, чтобы вручную включить или отключить ``buffering build`_ индекса.

Укажите целое значение от 10 до 100 для параметра fillfactor, чтобы настроить степень упаковки страниц индекса. Значение по умолчанию в PostgreSQL — 90.

ХэшИндекс

class HashIndex(*expressions, fillfactor=None, **options)

Создает хеш-индекс.

Укажите целое значение от 10 до 100 для параметра fillfactor, чтобы настроить степень упаковки страниц индекса. Значение по умолчанию в PostgreSQL — 90.

СпГистИндекс

class SpGistIndex(*expressions, fillfactor=None, **options)

Создает SP-GiST индекс.

Укажите целое значение от 10 до 100 для параметра fillfactor, чтобы настроить степень упаковки страниц индекса. Значение по умолчанию в PostgreSQL — 90.

Выражения OpClass()

class OpClass(expression, name)

Выражение OpClass() представляет собой выражение с пользовательским классом операторов, который можно использовать для определения функциональных индексов, функциональных ограничений уникальности или ограничений исключения. Чтобы использовать его, вам нужно добавить django.contrib.postgres в ваш INSTALLED_APPS. Установите для параметра name имя ``класса операторов`_.

Например:

Index(
    OpClass(Lower("username"), name="varchar_pattern_ops"),
    name="lower_username_idx",
)

создает индекс для Lower('username'), используя varchar_pattern_ops.

UniqueConstraint(
    OpClass(Upper("description"), name="text_pattern_ops"),
    name="upper_description_unique",
)

создает уникальное ограничение для Upper('description'), используя text_pattern_ops.

ExclusionConstraint(
    name="exclude_overlapping_ops",
    expressions=[
        (OpClass("circle", name="circle_ops"), RangeOperators.OVERLAPS),
    ],
)

создает ограничение исключения для «круга», используя «circle_ops».

Back to Top