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
.
Планировщику запросов не нужно сканировать всю таблицу в этом случае.