私は現在、テレコム分析プロジェクトとクエリ最適化の初心者に取り組んでいます。ブラウザーに結果を表示するには、わずか 45,000 件のレコードにアクセスするのに丸 1 分かかります。結果を表示する時間を短縮する方法を提案してください。
age-groupの人のcall-duration を見つけるために、次のクエリを書きました。
sigma=0
popn=len(Demo.objects.filter(age_group=age))
card_list=[Demo.objects.filter(age_group=age)[i].card_no
for i in range(popn)]
for card in card_list:
dic=Fact_table.objects.filter(card_no=card.aggregate(Sum('duration'))
sigma+=dic['duration__sum']
avgDur=sigma/popn
上記のコードは for ループ内にあり、年齢層を反復処理します。
モデルは次のとおりです。
class Demo(models.Model):
card_no=models.CharField(max_length=20,primary_key=True)
gender=models.IntegerField()
age=models.IntegerField()
age_group=models.IntegerField()
class Fact_table(models.Model):
pri_key=models.BigIntegerField(primary_key=True)
card_no=models.CharField(max_length=20)
duration=models.IntegerField()
time_8bit=models.CharField(max_length=8)
time_of_day=models.IntegerField()
isBusinessHr=models.IntegerField()
Day_of_week=models.IntegerField()
Day=models.IntegerField()
ありがとう