# Django 2.0.14.dev20190701080343 documentation

# Model index reference

New in Django 1.11.

Index classes ease creating database indexes. They can be added using the `Meta.indexes` option. This document explains the API references of `Index` which includes the index options.

Referencing built-in indexes

Indexes are defined in `django.db.models.indexes`, but for convenience they’re imported into `django.db.models`. The standard convention is to use `from django.db import models` and refer to the indexes as `models.<IndexClass>`.

## `Index` options

class `Index`(fields=[], name=None, db_tablespace=None)

  Creates an index (B-Tree) in the database.

### `fields`

`Index.``fields`

A list of the name of the fields on which the index is desired.

By default, indexes are created with an ascending order for each column. To define an index with a descending order for a column, add a hyphen before the field’s name.

For example `Index(fields=['headline', '-pub_date'])` would create SQL with `(headline, pub_date DESC)`. Index ordering isn’t supported on MySQL. In that case, a descending index is created as a normal index.

Support for column ordering on SQLite

Column ordering is supported on SQLite 3.3.0+ and only for some database file formats. Refer to the SQLite docs for specifics.

### `name`

`Index.``name`

The name of the index. If `name` isn’t provided Django will auto-generate a name. For compatibility with different databases, index names cannot be longer than 30 characters and shouldn’t start with a number (0-9) or underscore (_).

### `db_tablespace`

`Index.``db_tablespace`

New in Django 2.0.

The name of the database tablespace to use for this index. For single field indexes, if `db_tablespace` isn’t provided, the index is created in the `db_tablespace` of the field.

If `Field.db_tablespace` isn’t specified (or if the index uses multiple fields), the index is created in tablespace specified in the `db_tablespace` option inside the model’s `class Meta`. If neither of those tablespaces are set, the index is created in the same tablespace as the table.

See also

For a list of PostgreSQL-specific indexes, see `django.contrib.postgres.indexes`.