Я рассматриваю два различных варианта оформления таблицы.
Один из них включает столбец lifetime
, в котором хранится tstzrange
, определяющий время жизни записи.lifetime
различных строк никогда не перекрывается в фильтрах, определенных интересующим меня запросом. Поле индексируется с помощью:
create index on table_name using gist (lifetime);
В другом просто поле created_at
будет проиндексировано как:
create index on table_name (created_at);
Есть ли разница в производительности между:
select ...
from table_name
where ...
and lifetime @> now()
и:
select ...
from table_name
where ...
and created_at <= now()
order by created_at desc
limit 1
?