我正在为一张桌子考虑两种不同的设计。
可能会涉及一个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
?