実行したいこと
- Django をもちいて、テーブルに格納されている情報を参照したいと考えています。
状況・困っていること
- コード自体は動くのですが、時間が掛かって困っています。
- 特に、結果を変数に格納する部分は(下記1)一瞬で終了するのですが、その変数を呼び出す部分で時間がかかります。
python3
1>>> result = somemodel.objects.filter(hogehoge).order_by('hoge').values_list('hoge',flat=True) #1.一瞬で終わる resultはquerysetで、サイズは3行×1列 2>>> result[0] #2.1分以上時間が掛かる
わかっていること
- 環境のメモリを上げれば速度は改善します。
分からないこと・知りたいこと
- querysetの呼び出し方で、同じメモリの大きさでも速度が速くなる方法をご存知でしたら、共有いただけると幸いです。
- 上記1で、resultのサイズは3行×1列で、さほどサイズが大きいとは思えない(たとえテーブルのサイズがメモリ数より大きくても、filiterなどで切りだせばメモリに乗るはず)のですが、なぜこんなにも時間が掛かっているのでしょうか。併せて共有いただけると幸いです。
環境
- python 3.6
- django 2.1
- postgres 9系
- サーバーのメモリ:1GB程度
- 元のテーブルのサイズ:3.8GB
どうぞよろしくお願いいたします。
あなたの回答
tips
プレビュー