有没有办法提示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)
);
我可以像这样填充它:
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');
...
所以我有一些DataHolder表存储了一些像Sec1.SubSec1
这样的数据容器,对于每个容器,我有很多数据。
但关键部分是数据始终将其主键作为unix时间戳,并始终将其作为感兴趣的时间范围区域进行查询,并按升序排序。
例如:
select * from Datas where foreign_dataholder_id = 'Sec1.SubSec1' and
time >= 1513889450 and time <= 1513889451 order by time asc;
由于我总是以这种方式进行查询,因此告诉PostgreSQL已经在内部以Datas.time
按升序排列这些数据,这是最好的,性能明智的,所以它不需要每次都这样做查询我。
这可能吗?如果没有,还有其他方法来设计这些表吗?
编辑:
我虽然谈到了一些解决方案,例如一个数组可以工作,因为我总能保证它已经排序,而且我对它的大部分添加都是在它的最后,不需要排序。
但是,由于桌子中间偶尔会有插入,因此可能有些难以实现或不高效。我不知道。
另一个想法是链接列表,但我不知道PostgreSQL是否支持这种数据类型或如何使用。