はBest.objects.all()
を使用することがより良い選択だろうか、私はその後、Best.objects.all()
を使用してのPythonを使用して、すべてこれは、より良いパフォーマンスのフィルタ/すべてのdjango querysetでですか?
-1
A
答えて
1
に照会する必要はありません全体的な場合Best.objects.filter(this=that)
はより良いパフォーマンスをだろう場合のは、私は疑問に思ってBest
という名前のモデルを持っているとしましょうテストif this == that
は良い考えではありません。 Best.objects.filter(this = that)
は、データベースがチェックを実行するほどパフォーマンスが向上します。チェックを満たすオブジェクトだけがPythonで利用可能になります。
別の例を使用しましょう:amount = len(Best.objects.all())
は、amount = Best.objects.all().count()
よりもはるかに遅くなります。なぜなら、Pythonはそれを動作させる必要がないからです。
これはまったく別のものですが、あなたが尋ねたように...もし100万行のテーブルがあるなら。 '.all()'を呼び出すと、100万行を返す必要があります。もし 'this == that'がそれらの行のうちの1つのみであれば' .filter(this = that) 'を呼び出すほうがよいので、dbから1行を引くだけです。 –
@markwalker_は 'Best.objects.filter(this = that)'を呼び出さないのは、 'Best.objects.filter(を使用しない限り、' this = that'のすべてが検索されていることを確認するために百万行になります。最初にクエリを実行し、それを停止する – Tsuna
まだ100万行もありますが、データをPythonに転送するのではなく、データベース内で処理が行われるため、効率的です。説明のために@markwalker_thx多く –