Django 2.1.3 模型層 索引
索引
索引類可輕鬆建立資料庫索引。可以通過Meta.indexes選項新增它們 。本文件解釋了索引的API引用和index 選項。
引用內建索引
索引是在 django.db.models.indexes 中定義的,但為方便起見,它們被匯入到 django.db.models。標準約定是使用from django.db import models 和引用索引models.<IndexClass>。
Index 選項
class Index(fields=(), name=None, db_tablespace=None)
在資料庫中建立 B樹 索引。
fields
Index.fields
要建立索引的欄位名稱的列表或元組。
預設情況下,為每列建立一個升序的索引。要為列定義具有降序的索引,請在欄位名稱前新增 連字元-
。
例如Index(fields=['headline', '-pub_date'])
將建立SQL類似(headline, pub_date DESC)
。不支援在MySQL上的索引排序。在這種情況下,將降序索引建立為普通索引。
在Django 2.1中更改:
舊版本不接受元組。
name
Index.name
索引的名稱。如果沒有提供name,Django將自動生成一個名稱。為了與不同資料庫相容,索引名稱不能超過30個字元,並且不應以數字(0-9
)或下劃線(_
)開頭。
db_tablespace
Index.db_tablespace
Django 2.0中的新功能:
用於此索引的資料庫表空間的名稱。對於單欄位索引,如果未提供db_tablespace,則在欄位中的db_tablespace中建立索引。
如果Field.db_tablespace未指定(或者索引使用多個欄位),則db_tablespace在模型內的class Meta選項中指定的表空間中建立索引 。如果這兩個表空間都未設定,則索引將在與表相同的表空間中建立。
參見
有關PostgreSQL特定索引的列表,請參閱 django.contrib.postgres.indexes。