我有一个"帖子列表"我必须渲染。对于每个帖子,我必须做三个过滤器查询集,或者它们在一起,然后计算对象的数量。这合理吗?哪些因素可能会导致这种缓慢?
这大致是我的代码:
1. Java EE deployment descriptor
2. Runtime deployment descriptor
答案 0 :(得分:0)
我能看到的最大因素是你对每个帖子都有过滤操作。如果可能,您应该在一个查询中查询与每个帖子关联的结果。从count
开始,它是从查询中获取结果数量的最有效方式,因此它可能不是问题。
答案 1 :(得分:-1)
请尝试以下代码:
def viewable_posts(request, post):
private_posts = post.replies.filter(permissions=Post.PRIVATE, author_profile=request.user.user_profile).values_list('id',flat=True)
community_posts = post.replies.filter(permissions=Post.COMMUNITY, author_profile__in=request.user.user_profile.following.values_list('id',flat=True)
public_posts = post.replies.filter(permissions=Post.PUBLIC).values_list('id',flat=True)
Lposts_id = private_posts
Lposts_id.extend(community_posts)
Lposts_id.extend(public_posts)
viewable_posts = post.filter(id__in=Lposts_id).order_by('-modified_date')
viewable_posts_count = post.filter(id__in=Lposts_id).count()
return viewable_posts,viewable_posts_count
它应该改进以下内容:
实际上,如果您可以将前三个过滤查询压缩为一个,那么您也可以节省时间。