2011-12-16 6 views
2

私は大抵.values()を使用して、私のdjangoクエリーをスピードアップしています。 .only()と.values()の使用速度はどれくらいですか?

は最近、私は私が想定し .only()

しかし、それはと思われる辞書(ノーコードはオートコンプリートが例えばキータイプミス、)に対処する必要がないというメリットを持つ値よりわずかに遅い使用しようとしましたオブジェクト1000個をロードするときに.only()が~125秒遅くなりました。これは.values()(約4秒かかります)を使用する場合よりも遅くなりました。

このようなパフォーマンスを経験したことがありますか?誰でもこの観察を確認または拒否できますか?

答えて

3

クエリ自体はおそらく完了するまでに時間の同量を取るだろうが、私はあなたが見ているパフォーマンスの違いは、Python側にあると思います。 'only'メソッドを使うと、データベースから完全なDjangoオブジェクトを取り戻すことができます。これらは設定するのに費用がかかり、さらに多くのメモリを必要とします。彼らは実際には、数千個以上のアイテムを取り扱うときには、ほとんど完全に扱いにくくなります。

あなたが知っているように、 'values'メソッドはすべてを標準のPython辞書に入れます。これらは作業するのがはるかに難しいですが、セットアップ時間は些細であり、メモリ使用量は劇的に少なくなります。

あなたが実際のクエリの長​​さの違いをチェックしたい場合は、django debug toolbarをチェックしてください。これは、ページの負荷に対して行われたすべてのクエリの便利なプロファイリングされたリストを提供します。

関連する問題