过滤器上的多列索引并按查询排序

Multi-column Index on a filter & sort by query

我正在执行以下类型的查询:

查询:

select * 
from entity 
where last_updation_date between <START-VALUE-1> and <END-VALUE>  
order by entity_id limit <XYZ> offset <ABC>;

Table:实体本身也有一个索引(Btree)-

索引:

create index i_last_updation_date_idx 
   on entity using btree  (last_updation_date, entity_id)

但是好像这种类型的索引对上面的查询没有任何用处。谁能建议哪种索引更适合这种用例?

一些附加信息 -

Table 非常庞大,包含大约 1 TB 的数据。 last_updation_date 的数据类型是时间戳,精度设置为 29,比例设置为 6。

table 有大约 1,81,79,77,192 行。关于 entity_id - 它是由序列生成器生成的主键。 last_updation_date 是非常随机的(每当客户端更新实体时都会更新)。 last_updation_date 的值范围从时间戳 16,01,51,39,96,400 毫秒(即 2020 年 10 月 1 日)到 16,04,97,00,00,000 毫秒(即 2021 年 11 月 1 日)

我能够通过修改我的查询(按子句排序)解决这个问题 -

select * 
from entity 
where last_updation_date between <START-VALUE-1> and <END-VALUE>  
order by last_updation_date, entity_id limit <XYZ> offset <ABC>;

此查询使用了我提到的索引。

entity_id 对我的结果没有严格要求。我所需要的只是一种使用 LIMIT & OFFSET 以分页方式获取结果的方法。并且简单地使用 last_updation_date 进行分页是行不通的,因为不能保证它们始终是唯一的(可以重复)。因此,我同时使用了 last_updation_date 和 entity_id。