Django model 中設(shè)置聯(lián)合約束和聯(lián)合索引的方法
在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)文章
Python 實(shí)現(xiàn)Numpy中找出array中最大值所對(duì)應(yīng)的行和列
今天小編就為大家分享一篇Python 實(shí)現(xiàn)Numpy中找出array中最大值所對(duì)應(yīng)的行和列,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11Python PaddleNLP實(shí)現(xiàn)自動(dòng)生成虎年藏頭詩(shī)
這篇文章主要介紹了利用Python PaddleNLP實(shí)現(xiàn)自動(dòng)生成虎年藏頭詩(shī)功能,文中的示例代碼講解詳細(xì),感興趣的同學(xué)可以跟隨小編一起試一試2022-01-01python實(shí)現(xiàn)雙色球隨機(jī)選號(hào)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)雙色球隨機(jī)選號(hào),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01Python實(shí)現(xiàn)簡(jiǎn)易凱撒密碼的示例代碼
密碼的使用最早可以追溯到古羅馬時(shí)期,《高盧戰(zhàn)記》有描述愷撒曾經(jīng)使用密碼來(lái)傳遞信息,即所謂的“愷撒密碼”。本文將利用Python實(shí)現(xiàn)簡(jiǎn)易的凱撒密碼,感興趣的可以了解一下2022-09-09Python模型聚合查詢\Q查詢\F查詢\分組查詢操作技巧解析
這篇文章主要介紹了模型查詢中的一些操作技巧,主要包括模型聚合查詢,Q查詢,F(xiàn)查詢,分組查詢,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09使用python實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲
這篇文章主要為大家詳細(xì)介紹了使用python實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03python基于物品協(xié)同過(guò)濾算法實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了python基于物品協(xié)同過(guò)濾算法實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Python讀取postgresql數(shù)據(jù)庫(kù)詳情
這篇文章主要介紹了Python讀取postgresql數(shù)據(jù)庫(kù)詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09Python學(xué)習(xí)筆記之錯(cuò)誤和異常及訪問(wèn)錯(cuò)誤消息詳解
這篇文章主要介紹了Python學(xué)習(xí)筆記之錯(cuò)誤和異常及訪問(wèn)錯(cuò)誤消息,結(jié)合實(shí)例形式分析了Python錯(cuò)誤和異常及訪問(wèn)錯(cuò)誤消息try...except語(yǔ)句相關(guān)使用技巧,需要的朋友可以參考下2019-08-08