こんにちは、st-1985 です。 今回はCommon Table Expression (CTE)を使用したクエリの処理に時間がかかっていたので改善した話を書いていきたいと思います。 状況 以下のようなメッセージの配信情報とその統計情報の単位(Unit)となるモデル構成があります。 Unit: 統計集計の単位となるエンティティ Delivery: unit_id と delivered_at を持つ配信レコード。Unit ごとに複数存在する 管理画面には Unit の一覧ページ(1ページ最大10件)があり、そこでは各 Unit において最後に行った配信の時間を表示しています。 定期的に行っている Datadog を使ったパフォーマンス確認の場で、この一覧ページの表示時間が遅いことがわかりました。 改善前のコード # Unit has_one :last_delivery, lambda

