一丶说明
索引类(index classes)可以轻松的创建数据库索引,使用meta.indexes来添加索引设置.
例如:
from django.db import models
class Customer(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
class Meta:
indexes = [
models.Index(fields=['last_name', 'first_name']),
models.Index(fields=['first_name'], name='first_name_idx'),
]
indexes默认在django.db.models.indexes中导入,但方便起见,可以使用django.db.models导入
标准规范使用:
from django.db import models
models.<IndexClass>.
Index options(索引设置)
class Index(fields=[], name=None, db_tablespace=None(2.0加入))
作用:
在数据库中创建一个index(索引)B-Tree类型。
参数说明:
1.fields
Index.fields
列表内写入需要索引的字段
默认,列表按照升序排列。要定义一个列的降序的索引,在字段名之前添加连字符即可。
例如:
Index(fields=['headline', '-pub_date'])
SQL语句为(headline, pub_date DESC).
注意:MySQL不支持索引排序。在这种情况下,一个下降的索引被创建为一个正常的索引
2.name
Index.name
索引名,如果没有提供Django将自动提供一个名称,
为了与不同的数据库兼容应注意以下两点:
1.索引名长度不超过30个字符串
2.不能以数字(0-9)和下划线(_)开头
3.db_tablespace(2.0新加入)(表空间)
Index.db_tablespace
索引表空间名称. 对于单子段索引, 如果表空间名称没有给出, 索引将在字段内创建
如果Field.db_tablespace没有指定(或者索引使用多字段), 索引是在model的类元内的db表空间选项中指定的表空间中创建的,如果没有创建表空间, 则索引在与表空间相同的位置创建