Spec-Zone.ru › Django 4.0

Индексы моделей, специфичные для 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.

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

Была добавлена позиционная аргумент *expressions, чтобы поддержать функциональные индексы.

BrinIndex

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

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

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

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

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

Была добавлена позиционная аргумент *expressions, чтобы поддержать функциональные индексы.

BTreeIndex

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

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

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

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

Была добавлена позиционная аргумент *expressions, чтобы поддержать функциональные индексы.

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 включён.

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

Была добавлена позиционная аргумент *expressions, чтобы поддержать функциональные индексы.

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.

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

Была добавлена позиционная аргумент *expressions, чтобы поддержать функциональные индексы.

HashIndex

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

Создаёт индекс хеширования.

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

Используйте этот индекс только в PostgreSQL 10 и более поздних версиях

Индексы хеширования доступны в PostgreSQL уже давно, но они имеют ряд проблем с целостностью данных в более старых версиях.

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

Была добавлена позиционная аргумент *expressions, чтобы поддержать функциональные индексы.

SpGistIndex

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

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

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

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

Была добавлена позиционная аргумент *expressions, чтобы поддержать функциональные индексы.

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

Новое в Django 3.2.
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.

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

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

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

Spec-Zone.ru

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