Индексы моделей, специфичные для PostgreSQL

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

BloomIndex

class BloomIndex(*expressions, length=None, columns=(), **options)[исходный код]

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

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

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

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

BrinIndex

class BrinIndex(*expressions, autosummarize=None, pages_per_range=None, **options)[исходный код]

Создает BRIN index.

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

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

BTreeIndex

class BTreeIndex(*expressions, fillfactor=None, **options)[исходный код]

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

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

GinIndex

class GinIndex(*expressions, fastupdate=None, gin_pending_list_limit=None, **options)[исходный код]

Создает gin index.

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

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

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

GistIndex

class GistIndex(*expressions, buffering=None, fillfactor=None, **options)[исходный код]

Создает индекс GiST index. Эти индексы автоматически создаются на пространственных полях с spatial_index=True. Они также полезны на других типах, таких как HStoreField или range fields.

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

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

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

HashIndex

class HashIndex(*expressions, fillfactor=None, **options)[исходный код]

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

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

SpGistIndex

class SpGistIndex(*expressions, fillfactor=None, **options)[исходный код]

Создает SP-GiST index.

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

Changed in Django 4.1:

Добавлена поддержка покрытия индексов SP-GiST на PostgreSQL 14+.

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

class OpClass(expression, name)[исходный код]

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

Например:

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 с помощью circle_ops.

Changed in Django 4.1:

Добавлена поддержка ограничений исключения.

Вернуться на верх