如何在 PostgreSQL 中存储已排序的数据

Sas*_*ssa 6 sorting postgresql

有没有办法提示 PostgreSQL 数据库以排序的方式存储数据?

例如,我有这个 SQL 架构:

create table DataHolder(
    name text,
    path ltree primary key
);

create table Datas(
    time int primary key,
    foreign_dataholder_id ltree references Exchange(path)
);
Run Code Online (Sandbox Code Playgroud)

我可以像这样填充它:

insert into DataHolder(name, path) values ('A', 'Sec1.SubSec1');
insert into DataHolder(name, path) values ('B', 'Sec1.SubSec2');
insert into DataHolder(name, path) values ('C', 'Sec2.SubSec1');
...

insert into Datas (time, foreign_exchange_id) values (1513889449, 'Sec1.SubSec1');
insert into Datas (time, foreign_exchange_id) values (1513889451, 'Sec1.SubSec1');
...
Run Code Online (Sandbox Code Playgroud)

所以我有一些 DataHolder 表,它存储一些像树一样的数据容器Sec1.SubSec1,对于每个容器,我有很多数据。

但关键部分是数据始终将其主键作为 unix 时间戳,并且始终将其作为感兴趣的时间范围区域进行查询并按升序排序。

例如:

select * from Datas where foreign_dataholder_id = 'Sec1.SubSec1' and
  time >= 1513889450 and time <= 1513889451 order by time asc;
Run Code Online (Sandbox Code Playgroud)

因为我总是以这种方式查询,所以从性能角度来看,最好告诉 PostgreSQL 已经在内部按升序存储这些数据,Datas.time这样它就不需要在我执行的每个查询中都这样做。

那可能吗?如果没有,是否有其他方法来设计这些表?

编辑:

我认为有一些解决方案,例如数组可以工作,因为我总是可以保证它已排序,并且我对它的大部分添加将在不需要排序的末尾。

但是,由于偶尔会在表格中间进行插入,因此可能会有些困难或效率不高......我不知道。

另一个想法是链表,但我不知道 PostgreSQL 是否支持这种数据类型或如何使用。