0

我有一个原始的 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())

我们可以更好地优化它吗?

4

0 回答 0