我在postgres中有一个包含十亿行的大型表,其模式如下:
表格:集合
| 标识符|唯一标识符|数据_1|数据_2|
| - -|- -|- -|- -|
| 一个|4343-5454......电话号码:|数据11|数据22|
| 2个|3264-4243号......|数据传输|达代|
这里,只有id是主键(DEFAULT,BIGINT),其余键没有任何索引或关系。
我有一个第三方应用程序,它从这个表中读取数据到它的RAM中并执行操作。但是随着大小的增加,它受到它的内存的限制。
因此,我希望将表拆分为每行n行(根据应用程序的RAM使用情况决定),并将它们保存为单独的表,以便应用程序可以在多个示例中运行,并且只读取较小的表。
备注:行在保存后不会更改。
我试着写一个简单的Python脚本,它只是从主表读取数据并将其保存到一个新表中,但这需要很多时间。有没有办法直接在Postgresql中完成这一操作?
- 谢谢-谢谢
1条答案
按热度按时间xxe27gdn1#
对于这种情况,一个可能的解决方案是使用表分区。也就是说,根据特定列(在您的情况下为
id
)将原始的大表拆分为较小的表(称为分区),这样查询就不会在整个表中搜索,而只是在适当的分区中搜索,这样效率会高得多。请查看以下PostgreSQL文档:
https://www.postgresql.org/docs/current/ddl-partitioning.html