Индексы моделей 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/