2

アプリの各リクエストに必要な SQL 選択クエリの数を理解しようとしています (Django + Tastypie)。関連するログを表示できるように、ロギング構成を変更しました。何らかの理由で、膨大な数のこれらのログが表示されます。たとえば、単純な get_list の場合、約 100 の選択行が表示されます。デバッグしようとして、それらがすべてどこから来たのかを確認しようとしたとき、これらのログを生成する行に入ることができませんでした。また、左側の数値が非常に低いことにも気付きました (通常は 0.001)。この数字は、クエリを実行する時間 (秒単位) であると想定しています。

これらすべての行の説明は何ですか?

4

1 に答える 1

1

Tastypie api.py ファイルで、おそらくデフォルトのクエリセットを変更して、prefetch_related または select_related を含める必要があります。どちらを使用するかは、実際のモデルによって異なります。次に例を示します。

class OfferResource(ModelResource):
    user = fields.ForeignKey(UserResource, 'user', full=False)
    country = fields.ForeignKey(CountryResource, 'country', full=True) 
    campaign = fields.ForeignKey(CampaignResource, 'campaign', full=False)    
    network = fields.ForeignKey(NetworkResource, 'network', full=False, null=True)       
    class Meta:
        queryset = Offer.objects.prefetch_related('offerstat').select_related('country', 'campaign', 'network').all()   
于 2012-05-04T02:24:57.497 に答える