Индексы конкретной модели PostgreSQL¶
Ниже приведены специфичные для PostgreSQL индексы, доступные в модуле django.contrib.postgres.indexes.
БлумИндекс¶
- class BloomIndex(*expressions, length=None, columns=(), **options)¶
Создает индекс Bloom.
Чтобы использовать этот доступ к индексу, вам необходимо активировать расширение Bloom в PostgreSQL. Вы можете установить его с помощью операции миграции
BloomExtension.Укажите целое число бит от 1 до 4096 в параметре length, чтобы указать длину каждой записи индекса. По умолчанию PostgreSQL — 80.
Аргумент Columns принимает кортеж или список, содержащий до 32 значений, которые представляют собой целое число бит от 1 до 4095.
БринИндекс¶
- class BrinIndex(*expressions, autosummarize=None, pages_per_range=None, **options)¶
Создает BRIN-индекс.
Установите для параметра autosummarize значение True, чтобы включить автоматическое суммирование с помощью автоочистки.
Аргумент «pages_per_range» принимает положительное целое число.
BTreeIndex¶
- class BTreeIndex(*expressions, fillfactor=None, deduplicate_items=None, **options)¶
Создает индекс B-дерева.
Укажите целое значение от 10 до 100 для параметра fillfactor, чтобы настроить степень упаковки страниц индекса. Значение по умолчанию в PostgreSQL — 90.
Укажите логическое значение для параметра deduulate_items, чтобы контролировать, включена ли дедупликация. PostgreSQL по умолчанию включает дедупликацию.
Changed in Django 5.1:Добавлен параметр
deduplate_items.
ДжинИндекс¶
- class GinIndex(*expressions, fastupdate=None, gin_pending_list_limit=None, **options)¶
Создает gin index.
Чтобы использовать этот индекс для типов данных, не входящих во встроенные классы операторов, вам необходимо активировать расширение btree_gin в PostgreSQL. Вы можете установить его с помощью операции миграции
BtreeGinExtension.Установите для параметра fastupdate значение False, чтобы отключить метод быстрого обновления GIN, который включен по умолчанию в PostgreSQL.
Укажите целое число килобайт в параметре gin_pending_list_limit, чтобы настроить максимальный размер списка ожидающих выполнения GIN, который используется, когда включен fastupdate.
GistIndex¶
- class GistIndex(*expressions, buffering=None, fillfactor=None, **options)¶
Создает индекс GiST <https://www.postgresql.org/docs/current/gist.html>_. Эти индексы автоматически создаются для пространственных полей с помощью
spatial_index=True. Они также полезны для других типов, таких какHStoreFieldили поля диапазона.Чтобы использовать этот индекс для типов данных, не входящих во встроенные классы операторов gist, вам необходимо активировать расширение btree_gist в PostgreSQL. Вы можете установить его с помощью операции миграции
BtreeGistExtension.Установите для параметра
bufferingзначениеTrueилиFalse, чтобы вручную включить или отключить ``buffering build`_ индекса.Укажите целое значение от 10 до 100 для параметра fillfactor, чтобы настроить степень упаковки страниц индекса. Значение по умолчанию в PostgreSQL — 90.
ХэшИндекс¶
- class HashIndex(*expressions, fillfactor=None, **options)¶
Создает хеш-индекс.
Укажите целое значение от 10 до 100 для параметра fillfactor, чтобы настроить степень упаковки страниц индекса. Значение по умолчанию в PostgreSQL — 90.
СпГистИндекс¶
- class SpGistIndex(*expressions, fillfactor=None, **options)¶
Создает SP-GiST индекс.
Укажите целое значение от 10 до 100 для параметра fillfactor, чтобы настроить степень упаковки страниц индекса. Значение по умолчанию в PostgreSQL — 90.
Выражения OpClass()¶
- class OpClass(expression, name)¶
Выражение OpClass() представляет собой выражение с пользовательским классом операторов, который можно использовать для определения функциональных индексов, функциональных ограничений уникальности или ограничений исключения. Чтобы использовать его, вам нужно добавить 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_ops».