首页 > 编程知识 正文

sql 联合索引,django反向生成model

时间:2023-05-05 12:51:41 阅读:60039 作者:1413

索引在数据库中起着重要的作用,大大提高了数据的查询速度,但过多的索引也会降低插入、删除和更新表的速度。 因为在执行这些写入操作时,还会操作索引文件。

在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 %直接得到一万的数据

在建立联合索引的同时,也为他们之间的组合建立索引。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。