Я бы сделал примерно также. Просто отфильтровал бы удаленные/неактивные прошелся по всем оставшимся энтити, обновил их, а потом сохранил бы изменения. Тут как не крути, но всем энтити, которые нужно обновлять нужно изменить значение. То есть минимальная сложность, которую я вижу это O(n).
По-поводу фильтрации думаю это имеет смысл, т.к. удаленных/неактивных может быть очень много, если не больше чем активные. НО это если у тебя soft delete(записи просто помечаются как удаленные, но на самом деле не удаляются), в противном случае не уверен есть ли смысл в фильтрации