欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django model 中設置聯(lián)合約束和聯(lián)合索引的方法

 更新時間:2019年08月06日 18:15:11   作者:ding_312  
今天小編就為大家分享一篇Django model 中設置聯(lián)合約束和聯(lián)合索引的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在Django model中對一張表的幾個字段進行聯(lián)合約束和聯(lián)合索引,例如在購物車表中,登錄的用戶和商品兩個字段在一起表示唯一記錄。

舉個栗子:

Django model中購物車表

class Cart(models.Model):
  user = models.ForeignKey(
    MyUser,
    verbose_name="用戶"
  )
  goods = models.ForeignKey(
    Goods,
    verbose_name="商品"
  )
  num = models.IntegerField(
    verbose_name="商品數(shù)量"
  )
  is_select = models.BooleanField(
    default=True,
    verbose_name="選中狀態(tài)"
  )
 
  class Meta:
    # 聯(lián)合約束  其中goods和user不能重復
    unique_together = ["goods", "user"]
    # 聯(lián)合索引
    index_together = ["user", "goods"]

unique_together = ["goods", "user"] 表示聯(lián)合約束,其中"goods"和"user"表示不能重復,不能一樣。

index_together = ["user", "goods"] 表示聯(lián)合索引,其中"goods"和"user"聯(lián)合同步查詢,提高效率。

聯(lián)合索引的優(yōu)勢

示例SQL:select * from person where a=100 and b=100 and c=1000;

​假設你的數(shù)據(jù)有一千萬條 每次條件過濾 省10%的數(shù)據(jù)

1 如果三個單索引 先拿a的索引找 剩下100萬數(shù)據(jù) 然后拿b條件找 剩十萬 再c條件找 最后得到一萬數(shù)據(jù)

2 如果是聯(lián)合索引 他 一千萬數(shù)據(jù)*10% * 10% * 10% 直接得到一萬條數(shù)據(jù)

建立聯(lián)合索引的同時 還會給他們之間的組合建立索引

以上這篇Django model 中設置聯(lián)合約束和聯(lián)合索引的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論