我创建了一个大容量删除函数,它更新所有启用的项的is_active
标志。我尝试用下面的语句更新5000条记录
Item.objects.filter(owner=request.user.profile, enabled=True, is_active=True).update(is_active=False)
但是它的速度非常慢,我担心这会导致服务器内存不足。在
我以前有过下面的,但还是很慢。在
^{pr2}$正在使用的数据库是SQLite
,我正在使用Django 1.7
。在
我希望尽可能优化这个操作。任何指针或良好的查询优化文档将不胜感激。在
你说你正在删除,但是在你的代码中你是在更新行而不是删除。除此之外,您在第一个代码段中使用的格式是正确的。在
要提高性能,您可以使用index_together和所有者、已启用和是活动的字段(注意,这会在添加项目时增加一些负载)。在
但是,正如@Selcuk评论的那样,如果您的目标是性能,那么就使用一些严肃的数据库后端,比如postgresql。在
顺便说一句,看看Django提供的db optimization文档,这样您就可以学到一些将来实现的技巧;)。在
相关问题 更多 >
编程相关推荐