---
title: "Indeks model khusus PostgreSQL"
version: 4.0
locale: id
source: https://docs.djangoproject.com/id/4.0/ref/contrib/postgres/indexes/
canonical: https://djangodocs.dev/id/4.0/ref/contrib/postgres/indexes/
---
# Indeks model khusus PostgreSQL

Berikut adalah [indexes](/id/4.0/ref/models/indexes/) khusus PostgreSQL tersedia dari modul  `django.contrib.postgres.indexes`.

## `BloomIndex`

#### `class BloomIndex(*expressions, length=None, columns=(), **options)`

Creates a [bloom](https://www.postgresql.org/docs/current/bloom.html) index.

To use this index access you need to activate the [bloom](https://www.postgresql.org/docs/current/bloom.html) extension on
PostgreSQL. You can install it using the
[`BloomExtension`](/id/4.0/ref/contrib/postgres/operations/#django.contrib.postgres.operations.BloomExtension) migration
operation.

Provide an integer number of bits from 1 to 4096 to the `length`
parameter to specify the length of each index entry. PostgreSQL's default
is 80.

The `columns` argument takes a tuple or list of up to 32 values that are
integer number of bits from 1 to 4095.

> **Changed in Django 3.2**
>
> Positional argument `*expressions` was added in order to support
> functional indexes.

## `BrinIndex`

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

Membuat sebuah [BRIN index](https://www.postgresql.org/docs/current/brin-intro.html).

Lihat parameter `autosummarize` menjadi `True` untuk mengadakan [automatic summarization](https://www.postgresql.org/docs/current/brin-intro.html#BRIN-OPERATION) untuk dilakukan oleh autovacuum.

Argumen `pages_per_range` megnambil integer positif.

> **Changed in Django 3.2**
>
> Positional argument `*expressions` was added in order to support
> functional indexes.

## `BTreeIndex`

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

Membuat sebuah indeks B-Tree.

Sediakan nilai integer dari 10 ke 100 pada parameter [fillfactor](https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-STORAGE-PARAMETERS) untuk mengatur bagaimana halaman indeks dibungkus. Awalan PostgreSQL adalah 90.

> **Changed in Django 3.2**
>
> Positional argument `*expressions` was added in order to support
> functional indexes.

## `GinIndex`

#### `class GinIndex(*expressions, fastupdate=None, gin_pending_list_limit=None, **options)`

Membuat sebuah [gin index](https://www.postgresql.org/docs/current/gin.html).

Untuk menggunakan indeks ini pada jenis data tidak dalam [built-in operator classes](https://www.postgresql.org/docs/current/gin-builtin-opclasses.html), anda butuh mengaktifkan [btree\_gin extension](https://www.postgresql.org/docs/current/btree-gin.html) pada PostgreSQL. Anda dapat memasang itu menggunakan tindakan perpindahan [`BtreeGinExtension`](/id/4.0/ref/contrib/postgres/operations/#django.contrib.postgres.operations.BtreeGinExtension).

Setel parameter `fastupdate` menjadi `False` untuk meniadakan [GIN Fast Update Technique](https://www.postgresql.org/docs/current/gin-implementation.html#GIN-FAST-UPDATE) yang diadakan secara awalan di PostgreSQL.

Provide an integer number of bytes to the [gin\_pending\_list\_limit](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-GIN-PENDING-LIST-LIMIT) parameter
to tune the maximum size of the GIN pending list which is used when
`fastupdate` is enabled.

> **Changed in Django 3.2**
>
> Positional argument `*expressions` was added in order to support
> functional indexes.

## `GistIndex`

#### `class GistIndex(*expressions, buffering=None, fillfactor=None, **options)`

Membuat sebuah [GiST index](https://www.postgresql.org/docs/current/gist.html). Indeks-indeks ini otomatis dibuat pada bidang spasial dengan [`spatial_index=True`](/id/4.0/ref/contrib/gis/model-api/#django.contrib.gis.db.models.BaseSpatialField.spatial_index). Mereka juga berguna pada jenis lain, seperti [`HStoreField`](/id/4.0/ref/contrib/postgres/fields/#django.contrib.postgres.fields.HStoreField) atau [range fields](/id/4.0/ref/contrib/postgres/fields/#range-fields).

Untuk menggunakan indeks ini pada jenis-jenis data tidak dalam siap-pakai [gist operator classes](https://www.postgresql.org/docs/current/gist-builtin-opclasses.html), anda butuh mengaktifkan [btree\_gist extension](https://www.postgresql.org/docs/current/btree-gist.html)  pada PostgreSQL. Anda dapat memasang itu menggunakan tindakan perpindahan  [`BtreeGistExtension`](/id/4.0/ref/contrib/postgres/operations/#django.contrib.postgres.operations.BtreeGistExtension).

Setel parameter `buffering` menjadi `True` atau `False` untuk secara manual mengadakan atau meniadakan [buffering build](https://www.postgresql.org/docs/current/gist-implementation.html#GIST-BUFFERING-BUILD) dari indeks.

Sediakan nilai integer dari 10 ke 100 pada parameter [fillfactor](https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-STORAGE-PARAMETERS) untuk mengatur bagaimana halaman indeks dibungkus. Awalan PostgreSQL adalah 90.

> **Changed in Django 3.2**
>
> Positional argument `*expressions` was added in order to support
> functional indexes.

## `HashIndex`

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

Membuat sebuah indeks campuran.

Sediakan nilai integer dari 10 ke 100 pada parameter [fillfactor](https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-STORAGE-PARAMETERS) untuk mengatur bagaimana halaman indeks dibungkus. Awalan PostgreSQL adalah 90.

> **Gunakan indeks ini hanya pada PostgreSQL 10 dan kemudian**
>
> Pengindeksan campuran telah tersedia dalam PostgreSQL untuk waktu yang lama, tetapi mereka menderita dari sejumlah masalah kesatuan data dalam versi terlama.

> **Changed in Django 3.2**
>
> Positional argument `*expressions` was added in order to support
> functional indexes.

## `SpGistIndex`

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

Membuat sebuah [SP-GiST index](https://www.postgresql.org/docs/current/spgist.html).

Sediakan nilai integer dari 10 ke 100 pada parameter [fillfactor](https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-STORAGE-PARAMETERS) untuk mengatur bagaimana halaman indeks dibungkus. Awalan PostgreSQL adalah 90.

> **Changed in Django 3.2**
>
> Positional argument `*expressions` was added in order to support
> functional indexes.

## `OpClass()` expressions

> **New in Django 3.2**

#### `class OpClass(expression, name)`

An `OpClass()` expression represents the `expression` with a custom
[operator class](https://www.postgresql.org/docs/current/indexes-opclass.html) that can be used to define functional indexes or unique
constraints. To use it, you need to add `'django.contrib.postgres'` in
your [`INSTALLED_APPS`](/id/4.0/ref/settings/#std-setting-INSTALLED_APPS). Set the `name` parameter to the name of
the [operator class](https://www.postgresql.org/docs/current/indexes-opclass.html).

Sebagai contoh:

```
Index(
    OpClass(Lower('username'), name='varchar_pattern_ops'),
    name='lower_username_idx',
)
```

creates an index on `Lower('username')` using `varchar_pattern_ops`.

Another example:

```
UniqueConstraint(
    OpClass(Upper('description'), name='text_pattern_ops'),
    name='upper_description_unique',
)
```

creates a unique constraint on `Upper('description')` using
`text_pattern_ops`.

> **Changed in Django 4.0**
>
> Support for functional unique constraints was added.
