1

私のアプリケーションは Postgres テーブルからすべての行を取得する必要がありますが、不明な制約があるため、1 つのクエリから返される結果の数を制限する必要があります (たとえばlimit l( l=100000))。

したがって、オフセットと制限を使用したページネーションが当面の解決策として頭に浮かびます。ただし、Postgre のドキュメントに は次のように記載されています。

句によってスキップされた行はOFFSET、サーバー内で計算する必要があります。したがって、大きなサイズOFFSETは非効率的である可能性があります。

したがって、pages_count * lページング[1, l], [l+1, 2*l], ..., [(pages_count-1)*l+1, pages_count*l]で行を要求すると、実際(pages_count*l+1)*pages_count*l/2にはどのO(sqr(pages_count*l))行が読み取られます。

for page_number := 0; page_number < pages_count; page_number++ {
 retrieve_and_store("select amount from transactions order by time offset $page_number limit 100000")
}

または、Postgres は最近のクエリからの行をキャッシュしますか、またはすべてのpage_count*l行を取得する効率的な方法は何ですか?

4

0 に答える 0