Django-postgress: Частичный индекс по метке времени

Рассмотрите

queryset = queryset.filter(
                Q(enabled=False) | Q(expires_at__isnull=False) & Q(expires_at__lte=timezone.now()) |
            )

Я хотел бы иметь частичный индекс для поддержки этого запроса. AFAIK, этот индекс не будет использоваться во время выполнения вышеприведенного запроса, потому что значение timezone.now() меняется. С другой стороны, если я просто проиндексирую enabled, это также не будет полезным, потому что планировщик запросов все равно должен пройти через второе условие.

Я придумал один лучший способ сделать это. Частичная индексация 'expired_at' для условия enabled=False and expires_at is not null.

Планировщику запросов не нужно сканировать всю таблицу в этом случае.

Вернуться на верх