非唯一索引的Postgres分页

时间:2019-10-30 15:10:27

标签: postgresql indexing pagination postgresql-11 b-tree-index

我想基于索引列进行排序和分页,但是该列不是唯一的。

该表不会定期更新。

例如, 如果该表包含:

my_column | another_column
--------------------------
1         |  111 
1         |  222 
1         |  333
2         |  444

第一页的查询是:

SELECT * FROM my_table WHERE my_column >= 0 ORDER BY my_column LIMIT 2 OFFSET 0;

这将产生以下结果:

my_column | another_column
--------------------------
1         |  111 
1         |  222 

如果我现在运行此查询:

SELECT * FROM my_table WHERE my_column >= 1 ORDER BY my_column LIMIT 2 OFFSET 2;

鉴于数据没有变化,我能否始终如一地在下面得到理想的结果?:

my_column | another_column
--------------------------
1         |  333 
2         |  444 

我想避免得到如下重复结果:

my_column | another_column
--------------------------
1         |  111 
2         |  222 

my_column | another_column
--------------------------
1         |  222 
2         |  444 

我想避免在索引中包含更多列以节省空间。

我不介意结果的顺序,只要我在查询之间没有重复即可。这可能吗?

0 个答案:

没有答案