哪一个对性能更好?
我们拿一片产品。这使我们无法批量更新。
products = Product.objects.filter(featured=True).order_by("-modified_on")[3:]
for product in products:
product.featured = False
product.save()
或(无效)
for product in products.iterator():
product.update(featured=False)
我也尝试过 QuerySet 的 in 语句,如下所示。
Product.objects.filter(pk__in=products).update(featured=False)
这条线在 SQLite 上运行良好。但是,它在 MySQL 异常之后上升。所以,我不能用那个。
DatabaseError: (1235, "这个版本的 MySQL 还不支持 'LIMIT & IN/ALL/ANY/SOME 子查询'")
编辑: iterator() 方法也会导致重新评估查询。因此,这对性能不利。