データベースからk個のランダムな行を選択する必要があります。私たちは(それほど革新的ではない)、この思い付いたpostgresからk個のランダムな行を選択するdjango ORM
table.objects.filter(..).order_by('?')[:k]
が、その後、私たちは、これは非常に非効率的なソリューションであることを、インターネット上で読む: - - : だから、私たちのintialの思考は次のように起こっていた
しかしこれはこれまでよりも遅いようです。
私たちは、正確に選択するための正しいアプローチが何であるかを知りたがっています。我々のケースではpostgresであるデータベースから正確にk行です。
[:k]は、自動的にSQLにLIMITを設定するため、良いアプローチです。 – sebb
'order_by( '?')'は大きなテーブルでは非常に遅いです。 'max_id'を取り出して、Pythonコードの' 1、...、max_id'の集合から 'k'個の数字を選ぶ方が速いです。 – Tobias
2番目の方が効率的ではありません。なぜなら、必要なkだけでなく、すべての一致する行をフェッチするからです。 –