2016-11-22 3 views
-1

私のプロジェクトでは、同じモデルで同じビューで何度もクエリを行う必要がある状況に直面しています。 (この場合、djangoとpostgresqlを使用しているdjangoモデル)。データベースでのクエリ

これのための第1のアプローチは、同じモデル上で複数回フィルタリングすることです。

もう1つのアプローチは、モデルに対してクエリを実行し、すべてのデータを取得してローカル変数に保存することです。それから私はその変数を何度かフィルタリングすることができます。

どのアプローチが最も効率的であるかは、私がより速く、どのアプローチを通過すべきかを意味します。

私は人々という名前のモデルを持っていると私は、次の2つのアプローチを取ることができると言うことができます:

(1)

active_peoples = People.objects.filter(active=True) 
lazy_peoples = People.objects.filter(lazy=True) 
inactive_peoples = People.objects.filter(active=False) 
good_peoples = People.objects.filter(good=True) 
bad_peoples = People.objects.filter(good=False) 

あるアプローチ(2)

peoples = People.objects.all() 
lazy_peoples = peoples.filter(lazy=True) 
inactive_peoples = peoples.filter(active=False) 
good_peoples = peoples.filter(good=True) 
bad_peoples = peoples.filter(good=False) 

もっと早く??

+0

具体的な例がない場合、これはあまりにもあいまいである – Sayse

答えて

0

私はデータセットとコーディングに完全に依存していると思います。Djangoは、時間の制約が少ない効率的な方法でデータをフィルタリングできる最適なフィルタリング方法を提供しています。

まずテストケース: -

あなたは、データベースを数回押すと、一つの変数にしてもよいが、一度それを取得よりも多くの時間を要するデータ、店舗を取得し、そのを反復処理することができる、小さなデータセットを持っていると仮定します。この場合は、データを1つの変数に格納する方がよいでしょう。

第二に、テストケース: -

はあなたdjagoでフェッチされたデータは、一度それをフェッチするよりも時間がかかり、変数に格納し、それを介して可変反復で保存した後も毎回フィルタリング場合は、この中で、大規模なデータセットを持っていると仮定します複雑さの少ないアルゴリズムを使用します。

関連する問題