24
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ハイパフォーマンスDjango - Model

Last updated at Posted at 2016-05-19

High Perfomance Djangoを読んでとても勉強になったので、備忘録メモ。

クエリの数を減らせ

これをちゃんと使ってね。
開発中は、Django Debug Toolbarで発行クエリを確認。

クエリの実行時間を短く

  • indexをきちんと張る
  • でかいJoinは避ける
  • でかいテーブルにはall()はやめて、LIMITかける
  • 存在チェックはspam.count() > 0じゃなくて、spam.exists()

Foreign Keys

Generic Foreign Keysは便利だけど、裏でパフォーマンス悪いクエリ投げてることある。
自分で外部キー張った方がいい場合も。

cached_propety

実行コストがかかる & 何度も呼ばれるプロパティに対しては、キャッシュが有効。
https://docs.djangoproject.com/ja/1.9/ref/utils/

扱うオブジェクトは小さく

得られる結果がでかい場合は、これらを使ってパフォーマンスあげよう。

クエリキャッシュ

この2つが書籍の中では紹介されてたけど、Jonny Cacheは開発止まってた。
(Django1.5以上では使えなそう...)

自作するなら、gumiのブログで紹介されてるAbstructCachedModelが参考になる。
Djangoでキャッシュ機能付きモデル - gumi Engineer’s Blog

その他

勉強になったその他の資料

24
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?