我在找医疗用品
我有10个区域,每个区域有10张桌子,每个桌子都有医务室,还有10张桌子,每个桌子都有医务室提供的医疗用品。
现在我在这些药房里找一个医疗用品
每一个区域,我都会得到物体

  a_list = Washington_dispensaries.objects.all()

然后我在查每个药房里是否有这种特殊的东西
if category:
    a_lists = []
    for dispensary in a_list:
        items = dispensary.washington_dispensaries_item_set.filter(item__product_type__name = category)

        if items:
            result_cat_items.append(items)
            a_lists.append(dispensary)
    a_list = a_lists

对所有10个区域完成此查询需要15秒。
如果我用PHP编写代码,我将使用MySQL join加快查询速度。现在我该如何更快地查询。

最佳答案

你已经在做两个连接了,项目和产品类型。所以再做一个:不要把药房分开,而是作为过滤器的一部分。如果不查看模型,很难给出准确的语法,但类似于:

DispensaryItem.objects.filter(dispensary__location='Washington', item__product_type__name=category)

关于python - Django MySQL Join提高性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27702532/

10-10 17:58