どちらがパフォーマンスに優れていますか?
私たちは製品のスライスを取ります。一括更新が不可能になります。
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()メソッドはクエリを再評価します。したがって、パフォーマンスに悪影響を及ぼします。