Django SQL选择日志 - 为什么我看到这么多?

时间:2012-05-03 19:14:46

标签: sql django performance select logging

我正在尝试了解我的应用上每个请求需要多少SQL选择查询(Django + Tastypie)。我更改了日志配置,以便查看相关日志。 出于某种原因,我看到了大量的这些日志。 例如,对于简单的get_list - 我看到~100个选择行。 当我尝试调试时,看看它们都来自哪里,我无法进入生成这些日志的行。 我也注意到左边的数字非常低(通常为0.001)。我假设这个数字是执行查询的时间(以秒为单位)。

知道所有这些线路的解释是什么?

1 个答案:

答案 0 :(得分: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()