Django model 中设置联合约束和联合索引的方法
在Djangomodel中对一张表的几个字段进行联合约束和联合索引,例如在购物车表中,登录的用户和商品两个字段在一起表示唯一记录。
举个栗子:
Djangomodel中购物车表
classCart(models.Model): user=models.ForeignKey( MyUser, verbose_name="用户" ) goods=models.ForeignKey( Goods, verbose_name="商品" ) num=models.IntegerField( verbose_name="商品数量" ) is_select=models.BooleanField( default=True, verbose_name="选中状态" ) classMeta: #联合约束其中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=100andb=100andc=1000;
假设你的数据有一千万条每次条件过滤省10%的数据
1如果三个单索引先拿a的索引找剩下100万数据然后拿b条件找剩十万再c条件找最后得到一万数据
2如果是联合索引他一千万数据*10%*10%*10%直接得到一万条数据
建立联合索引的同时还会给他们之间的组合建立索引
以上这篇Djangomodel中设置联合约束和联合索引的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。