大表中的Postgres SELECT *

时间:2019-04-22 11:06:10

标签: sql postgresql

使用包含近7m的大型记录的Postgres表。我知道SELECT * FROM table足够大,可以容纳在内存中,因此在等待查询结果很长时间后(只能执行SELECT * FROM table LIMIT n),数据库连接丢失了。

我需要处理每条记录,直到最后一条。这是怎么做的?

1 个答案:

答案 0 :(得分:2)

您可以获取n条记录的大块。

select * from table where tableId>currentTableId and tableId<currentTableId*chunk_size

说明:

假设您有100条记录,而您的内存一次包含10条记录。

您从应用程序(任何ORM)中查询要执行10次

 int totalRecords = executeQuery('select count(*) from table');
    int chunkSize = 10;
    int chunks = totalRecords/chunkSize ;
    while(chuks>0){
    executeQuery('select * from table where tableId>currentTableId and tableId<currentTableId*chunkSize ');
chunk-=chunkSize;
    }

此代码非常抽象。只是对您的提示。