Spec-Zone.ru › Django 4.2

Индексы моделей 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, чтобы включить автоматическое суммирование, выполняемое автовакуумом.

Аргумент 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 Fast Update, которая по умолчанию включена в 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.1:

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

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

Spec-Zone.ru

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