2017-10-10 12 views
-1

Best.objects.all()を使用することがより良い選択だろうか、私はその後、Best.objects.all()を使用してのPythonを使用して、すべてこれは、より良いパフォーマンスのフィルタ/すべてのdjango querysetでですか?

+1

これはまったく別のものですが、あなたが尋ねたように...もし100万行のテーブルがあるなら。 '.all()'を呼び出すと、100万行を返す必要があります。もし 'this == that'がそれらの行のうちの1つのみであれば' .filter(this = that) 'を呼び出すほうがよいので、dbから1行を引くだけです。 –

+0

@markwalker_は 'Best.objects.filter(this = that)'を呼び出さないのは、 'Best.objects.filter(を使用しない限り、' this = that'のすべてが検索されていることを確認するために百万行になります。最初にクエリを実行し、それを停止する – Tsuna

+0

まだ100万行もありますが、データをPythonに転送するのではなく、データベース内で処理が行われるため、効率的です。説明のために@markwalker_thx多く –

答えて

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はそれを動作させる必要がないからです。

+0

ありがとう、私は前にそのような違いがあるのか​​分かりませんでした。特に 'len'と' count() 'は' count() 'を使って覚えていますが、これはなぜ人々がまだ' len'を使っているのでしょうか? – Tsuna

+0

「カウント」がより効率的であるとわかっている人もいれば、他の人がそれが存在するかどうかわからないと思います。 – montudor