意図せず関連先のカラムでwhereしつつeager loadしたらクエリのパフォーマンスが極端に悪化した事例

問題 15個ぐらいのさまざまなクエリパラメータを検索条件として受け付けることができる一覧取得API(「Item取得API」とする)があった。 そのAPIで取得するItemは複数の関連を持っていた。また、関連先の取得時にN+1問題の対策が不十分だったので、取得する…

『SQLパフォーマンス詳解』を読んだ

RDBのインデックス作成の戦略や実行計画の読みかたにもう少し詳しくなりたいと思っていたので、この手の話題が体系的にまとめられている『SQLパフォーマンス詳解』を読んだ。今回は和訳版を公式サイトで購入したが、SQLのインデックスとそのチューニングにつ…

macOSのDay Oneにプレーンテキストをインポートする

macOS Catalina 10.15.4 Day One 4.11.1 とします。 Day Oneのインポート機能 Day Oneはさまざまな形式のデータをエントリとしてインポートできる。 Importing data to Day One | Day One Help 日付形式の問題 上述したサポートページには、プレーンテキスト…

GraphQL開発のベストプラクティスをまとめた"Principled GraphQL"を読んだ

"Principled GraphQL"はApollo社が公開しているGraphQL開発のベストプラクティス集です。 principledgraphql.com 背景として、近年のアプリケーション開発では「データグラフ」が重要になってきているとしています。GraphQLを通じて、ある企業のすべてのアプ…

値の妥当性をチェックする日時表現パーサを作る

『Haskell入門』に日時表現("YYYY/MM/DD hh:mm:ss")のパーサをAttoparsecで作る節*1があり、 このままでは9999/99/99 99:99:99のような入力ができてしまいますが、月の入力範囲を1~12に制限するといった制約をかけることも、これまで説明した範囲で簡単に実…