Spec-Zone.ru › Django 4.1

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

Ниже приведены индексы моделей PostgreSQL, доступные из модуля 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.

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

Аргумент 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.

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

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

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

GistIndex

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

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

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

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

Укажите целое число от 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.

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

Изменено в Django 4.1:

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

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

class OpClass(expression, name)

Выражение OpClass() представляет expression с настраиваемым классом операторов, который может использоваться для определения функциональных индексов, функциональных уникальных ограничений или ограничений исключений. Для его использования необходимо добавить '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, используя circle_ops.

Изменено в Django 4.0:

Добавлена поддержка функциональных уникальных ограничений.

Изменено в Django 4.1:

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

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/4.1/ref/contrib/postgres/indexes/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API