Postgresql 在Postgres中保持N个最新分数

Postgresql 在Postgres中保持N个最新分数,postgresql,Postgresql,我的目标是在一行中获得N个最新的博士后分数。添加新点时,删除最旧的点 例如,假设我有N+1分。1个用户标识和N个整数。 现在,当一个新的整数出现在一个用户身上时,我想删除最旧的条目并添加新条目。显然,这里的问题是性能。因为我只添加了一个新整数,所以我想用一些方法来快速添加 我尝试了一种非常天真的方法,保留了两列 userid, json 其中json是所有整数的列表。我将删除第一个条目并附加新条目,并在postgres中转储json。毫无疑问,它的表现并不好 请提出一些好办法。Postgres

我的目标是在一行中获得N个最新的博士后分数。添加新点时,删除最旧的点

例如,假设我有N+1分。1个用户标识和N个整数。 现在,当一个新的整数出现在一个用户身上时,我想删除最旧的条目并添加新条目。显然,这里的问题是性能。因为我只添加了一个新整数,所以我想用一些方法来快速添加

我尝试了一种非常天真的方法,保留了两列

userid, json
其中
json
是所有整数的列表。我将删除第一个条目并附加新条目,并在postgres中转储json。毫无疑问,它的表现并不好


请提出一些好办法。Postgres是否有比线性复杂度更好的最小堆类型的数据结构?

数组呢?你能展示你的DDL和相关列吗?“Postgres有一些min-heap类型的数据结构吗”-是的,它被称为Table如果你想把你的点存储在一行中,那么线性复杂度是你能做的最好的;Postgres使用,因此对数据结构的任何更改都意味着需要复制整个内容。为了避免这种情况,您需要将列表作为条目存储在单独的表中,但这在实践中是否表现得更好在很大程度上取决于您的N值。N约为1500,我可能需要一次更新数千行。使用1500个整数,您不仅要复制周围的整个结构,但您将超过2kB阈值,这意味着您还需要为每次访问的压缩和/或离线存储查找付费。我觉得你最好有张桌子。数组呢?你能展示你的DDL和相关列吗?“Postgres有一些min-heap类型的数据结构吗”-是的,它被称为Table如果你想把你的点存储在一行中,那么线性复杂度是你能做的最好的;Postgres使用,因此对数据结构的任何更改都意味着需要复制整个内容。为了避免这种情况,您需要将列表作为条目存储在单独的表中,但这在实践中是否表现得更好在很大程度上取决于您的N值。N约为1500,我可能需要一次更新数千行。使用1500个整数,您不仅要复制周围的整个结构,但您将超过2kB阈值,这意味着您还需要为每次访问的压缩和/或离线存储查找付费。我觉得你最好有张桌子。