DjangoCongress JP 2019 Lightning Talk
明日から使うな!Django QuerySetアレパターンHayao Suzuki@CardinalXaro
View Slide
おまえ誰よ● Hayao Suzuki @CardinalXaro● 株式会社アイリッジ○ Pythonエンジニア○ テックリード(自称)● オライリージャパンの回し者○ テクニカルレビュワー(自称)
今日のテーマ● Django QuerySetでやらかした思い出を語る。● 本日、スマートフォンで作ったスライドなので手抜きです。● この発表はフィクションであり、営業さんが客先で軟禁されたとかエンジニアが土日待機したなどの事実はありません。
indexを張らずにDBがスパイクした● token = models.TextField(max_length=200)● token = models.CharField(max_length=200, db_index=True)
年月日で調べたい'regist_dt__year': today.year,'regist_dt__month': today.month,'regist_dt__day': today.day
なんだこれは、たまげたなあWHERE (EXTRACT(DAY FROM `regist_dt`) = 28 AND EXTRACT(MONTH FROM`regist_dt`) = 1 AND `regist_dt`BETWEEN '2019-01-01 00:00:00' AND '2019-12-31 23:59:59.999999'
こうした'regist_dt__gte': datetime.datetime.combine(datetime.date.today(),datetime.time.min),'regist_dt__lte': datetime.datetime.combine(datetime.date.today(),datetime.time.max),
そうそうこれだよWHERE (`regist_dt` >= 2019-01-28 00:00:00 AND `regist_dt` <= 2019-01-2823:59:59.999999
結論● 実行計画調べよう● SQL見よう● LT資料は事前に準備しよう