我有一张(非常)大的桌子,行数超过100米。我想删除具有某些条件的1M行,而不运行任何表锁定或超时问题。
在这种情况下,IMO delete with limit是最佳选择。
我正试图为一个简单的sql查询找到一个peewee等价物
DELETE FROM users WHERE condition=1 LIMIT 10
我的第一个方法是:
Users.delete().where(condition=10).limit(10)
但是DeleteQuery没有limit方法。哎呀。。。
那么,用peewee删除大量行的最佳实践是什么?
最佳答案
如果要使用限制删除,请使用子查询:
users_to_delete = User.select().where(...).limit(10)
Users.delete().where(User.id << users_to_delete)