Django modelでの結合制約と結合インデックスの設定
Django modelでは、1つのテーブルのいくつかのフィールドを結合制約し、結合インデックスします.たとえば、カートテーブルでは、登録されたユーザーと商品の2つのフィールドが一緒に一意のレコードを表します.
栗を挙げます.
Django modelでのカート表
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;
もしあなたのデータが1千万件あるとしたら、条件ごとに10%のデータをフィルタリングします.
1もし3つの単一のインデックスが先にaのインデックスを持って残りの100万のデータを探してそれからbの条件を持って残りの10万を探して更にcの条件を探して最後に1万のデータを得るならば
2もし連合インデックスならば彼の1千万のデータ*10%*10%*10%は直接1万のデータを得ます
結合インデックスを作成すると同時に、それらの間の組合せにインデックスを作成します.
栗を挙げます.
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;
もしあなたのデータが1千万件あるとしたら、条件ごとに10%のデータをフィルタリングします.
1もし3つの単一のインデックスが先にaのインデックスを持って残りの100万のデータを探してそれからbの条件を持って残りの10万を探して更にcの条件を探して最後に1万のデータを得るならば
2もし連合インデックスならば彼の1千万のデータ*10%*10%*10%は直接1万のデータを得ます
結合インデックスを作成すると同時に、それらの間の組合せにインデックスを作成します.