索引在数据库中起着重要的作用,大大提高了数据的查询速度,但过多的索引也会降低插入、删除和更新表的速度。 因为在执行这些写入操作时,还会操作索引文件。
在Django框架模型中如何索引?
例如,这样的购物清单:
classcart(models.model ) :
user=models.ForeignKey (
我的用户,
verbose_name='用户'
)
goods=models.ForeignKey (
谷歌,
verbose_name='商品'
)
num=models.IntegerField (
verbose_name='商品数量'
)
is_select=models.BooleanField (
默认=true,
verbose_name='选择状态'
)
例如,分别创建人员字段的索引
name=models.CharField (
blank=True,null=True,max_length=50,
verbose_name='名称',
db_index=True
)
当然,除了这种方式之外,还有以下两种。 分别为:
unique_together联合主键。 包括index_together
index_together组合索引
例如,在购物车表中,登录的用户和商品这两个字段在一起以显示唯一的记录。
classcart(models.model ) :
user=models.ForeignKey (
我的用户,
verbose_name='用户'
)
goods=models.ForeignKey (
谷歌,
verbose_name='商品'
)
num=models.IntegerField (
verbose_name='商品数量'
)
is_select=models.BooleanField (
默认=true,
verbose_name='选择状态'
)
class Meta:
goods和user不能重复的共同约束
unique_together=['goods ',' user']
#合并索引
index_together=['user ',' goods']
# unique_together=['goods ',' user']表示联合约束,其中' goods '和' user '表示不能重复,不能相同。
# index_together=['user ',' goods']表示合并索引,其中' goods '和' user '合并查询以提高效率。
索引集成的好处
示例SQL:select * frompersonwherea=100 an db=100 an DC=1000;
假设你的数据中有每千万个条件节约10%的数据
1、三个单索引先取a的索引寻找剩下的100万数据,再取b的条件寻找剩下的10万,再取c的条件最后得到1万数据
2、如果是合并索引,他的一千万数据* 10 % * 10 % * 10 % * 10 %直接得到一万的数据
在建立联合索引的同时,也为他们之间的组合建立索引。