Индексы моделей, специфичные для 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() выражения
-
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/