このラボでは、「ユーザーの行動履歴を出す画面が遅い」と言われたアプリ担当の想定で、PostgreSQL の実行計画を読み、インデックスで検索を速くします。
ブラウザで開く IDE の中の PostgreSQL に、イベント ログ events(30 万行、インデックスは主キーのみ)が入っています。まず EXPLAIN ANALYZE で全件走査(Seq Scan)になっていることと実際の時間を確認し、user_id のインデックス、続いて event_type と created_at の複合インデックスを作って、実行計画と時間がどう変わるかを実測します。
学習目標:
EXPLAIN / EXPLAIN ANALYZE の出力(Seq Scan・Index Scan・Bitmap Heap Scan・cost・actual time・rows)を読むCREATE INDEX で単一列インデックスを作り、効果を実行計画で確認するpg_relation_size)と、書き込みコストとのトレードオフを理解するSELECT / WHERE の基本explain_before.txt に Seq Scan の実行計画、explain_after.txt に Index Scan(または Bitmap)の実行計画が保存されていることidx_events_user_id と idx_events_type_created (event_type, created_at) が作成され、対応する検索がそれぞれのインデックスを使うこと詳細な手順は、ラボ開始後に画面内のガイドとして表示されます。
本番形式の問題で理解度を確認できます。各試験とも先頭 15 問は無料です。