postgresqlとrubyでの作業で、大きなデータベースをバッチで処理したいと思います。私はfind_eachを使用するように見えません。しかし、私は最大のIDを持つ最新のデータを処理する必要があります。制限とオフセットによるスコープとオーダーの使用
私の現在の試みはscore_okは、WHERE句でスコープです
score_ok.order(cmp_id: :desc).limit(X).offset(Y).pluck(:id)
です。 私は制限なしで、その後、小テスト・データベース上でこれを試してみて、すなわち
score_ok.order(cmp_id: :desc).pluck(:id)
オフセットした場合、私は
[372、362、363、361、366、367、368、369、370を参照してください。 371、364]私は
score_ok.order(cmp_id: :desc).limit(2).offset(0).pluck(:id)
をすれば
は、今私は
[362, 361]
を取得
と私は
score_ok.order(cmp_id: :desc).limit(2).offset(2).pluck(:id)
を行う場合、私は
[362, 366]
が、その後、私が欲しいです[372、362]と[363、361]を取得します。これはどうすればいいですか? limit(2).offset(2)
をクエリの先頭に移動しようとしましたが、それは役に立ちません。
開始時に 'created_at'によるこの順序付けは、誤解を招くことがあります。あなたは 'comp_id'の代わりにそれを使用していませんか? – potashin
開発ログから、実行されている実際のSQLを貼り付けることができますか?私の推測では、生成されたSQLは予期せぬことをしており、実際に何が起きているのか理解するのに役立ちます。私が似たようなときは、通常、生のSQLを使います。 – stef
potashin、私はcmp_idを使用しています(私は質問を編集しましたが)私がcreated_atと置き換えた場合、クエリは期待どおりに動作します。 cmp_idは日付型です。私は明日の未加工SQLを見ていきます。 – Obromios