您好,登錄后才能下訂單哦!
小編給大家分享一下Django model中如何設置聯合約束和聯合索引,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
在Django model中對一張表的幾個字段進行聯合約束和聯合索引,例如在購物車表中,登錄的用戶和商品兩個字段在一起表示唯一記錄。
舉個栗子:
Django model中購物車表
class Cart(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="選中狀態" ) 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 * from person where a=100 and b=100 and c=1000;
假設你的數據有一千萬條 每次條件過濾 省10%的數據
1 如果三個單索引 先拿a的索引找 剩下100萬數據 然后拿b條件找 剩十萬 再c條件找 最后得到一萬數據
2 如果是聯合索引 他 一千萬數據*10% * 10% * 10% 直接得到一萬條數據
建立聯合索引的同時 還會給他們之間的組合建立索引
以上是“Django model中如何設置聯合約束和聯合索引”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。