我有一个原始的 sql 查询:
UPDATE store_codeinventory set recipient_id = 1168, claimed_date = NOW()
where id = ANY((select array(select id from store_codeinventory
where recipient_id is NULL and inv_id = 72 and is_active=true
ORDER BY ID ASC LIMIT 1 FOR UPDATE)) ::integer[]) and recipient_id is NULL;
并试图优化它,导致我使用 django orm 查询:
CodeInventory.objects.filter(
**CodeInventory.objects.select_for_update(skip_locked=True).filter(recipient=None, is_active=True, inv_id=72)
.aggregate(id=models.Min('id'))
).update(recipient_id=1168, claimed_date=timezone.now())
我们可以更好地优化它吗?