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

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

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

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

舉個(gè)栗子:

Django model中購(gòu)物車表

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)合約束  其中g(shù)oods和user不能重復(fù)
    unique_together = ["goods", "user"]
    # 聯(lián)合索引
    index_together = ["user", "goods"]

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

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

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

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

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

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

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

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

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

相關(guān)文章

最新評(píng)論