....
t.datum + '30 days'::interval > now()
....
O co v tomto případě jde? Dejme sloupec datum typu
TIMESTAMP
, od informace uložené v tomto sloupci odečítáme interval 30 dnů. Tím jsme znemožnili využít index nad sloupcem datum a také pro každý řádek znovu vyhodnocujeme výraz now().Jednoduchou změnou lze dotaz znatelně zrychlit a navíc mu umožníme použít index nad sloupcem datum:
...
t.datum > 'now'::timestamp - '30 days'::interval
...
Také
'now'::timestamp - '30 days'::interval
je vyhodnoceno pouze jednou, není třeba znovu počítat pro každé porovnání.