brunch

매거진 Django doc

You can make anything
by writing

C.S.Lewis

by 장영석 Aug 27. 2018

Model index reference

Django model - Model index reference

Model Index reference


Index 클래스를 사용하면 데이터베이스 인덱스를 쉽게 만들 수 있다. Meta.indexes 옵션을 사용하여 추가될 수 있다. 이 문서는 index option을 포함하는 Index의 API 레퍼런스를 설명한다.


Referencing built-in indexes

인덱스는 django.db.models.indexes에 정의되어 있지만, 편의를 위해 django.db.models안에 import 되어 있다. 표준 규칙은 from django.db import models를 사용하고 models.<IndexClass>를 사용하여 인덱스를 참조하는 것이다.


Index options


class Index(fields=(), name=None, db_tablespace=None)


데이터베이스에서 인덱스 (B-Tree)를 생성한다.


fields

Index.fields

인덱스가 필요한 필드 이름의 리스트 또는 튜플.


기본적으로, 각 칼럼의 인덱스는 오름차순 정렬로 생성된다. 칼럼을 내림차순으로 정렬하는 인덱스를 정의하려면, 필드 이름 앞에 하이픈을 추가한다.


예를 들어 Index(fields=['headline', '-pub_date'])(headline, pub_date DESC) SQL로 생성된다. MySQL에서는 인덱스 정렬을 지원하지 않는다. 이런 경우, 일반적인 인덱스로써 내림차순 인덱스가 생성된다.


Changed in Django 2.1:

이전 버전에서는 튜플을 허용하지 않았다.


name

Index.name

인덱스의 이름. name이 제공되지 않으면 Django는 자동으로 생성한다. 다른 데이터베이스와 호환성을 위해, 인덱스 이름은 30 character를 넘을 수 없고 숫자(0-9) 또는 언더스코어(_)로 시작할 수 없다.


db_tablespace

Index.db_tablespace


New in Django 2.0:


이 인덱스가 사용할 데이터베이스 테이블스페이스의 이름. 단일 필드 인덱스의 경우 db_tablespace가 제공되지 않으면, 인덱스는 필드의 db_tablespace에 생성된다.


Field.db_tablespace가 지정되지 않으면 (또는 다중 필드 인덱스가 사용되면), 인덱스는 모델의 class Meta안의 db_tablespace 옵션에 지정된 테이블스페이스에 생성된다. 테이블스페이스가 어느 쪽도 지정되지 않으면, 인덱스는 테이블과 같은 테이블스페이스에 생성된다.


PostgreSQL에서 지정된 인덱스들의 목록은, django.contrib.postgres.indexes를 봐라.

매거진의 이전글 Django Model - Field API
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari