我正在寻找医疗用品
我有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来加快查询速度。现在我如何更快地查询。
答案 0 :(得分:1)
您已经对item和product_type进行了两次连接。所以再做一次:不要单独购买药房,而是将其作为过滤器的一部分。如果没有看到你的模型,很难给出确切的语法,但是类似于:
DispensaryItem.objects.filter(dispensary__location='Washington', item__product_type__name=category)