~/VibeHandbook
$39

09 · 05

インデックス

インデックス は本の巻末索引のようなものです。データベースがすべての行をスキャンする代わりに、一致する行へ直接ジャンプできるようにします。インデックスがなければ、データが増えるにつれてクエリは遅くなります — 100行なら問題なくても、1,000,000行では苦痛です。

実践的な指針:

  • 頻繁に フィルタ または 結合 (join) するカラムにインデックスを張る (例: author_idemail)。
  • 主キーは自動的にインデックスが張られます。
  • すべてにインデックスを張らない — 各インデックスは読み取りを速くしますが、書き込みを遅くし、容量を使います。
  • 遅いクエリを見たときにインデックスを追加します。すべてのカラムに先回りで張るのではなく。

インデックスが効くかどうかを知る正直な方法は、当てずっぽうではなくデータベースに尋ねることです。どのSQLエンジンにも、使う計画を見せてくれる EXPLAIN (Postgresでは EXPLAIN ANALYZE) があります:

EXPLAIN ANALYZE
SELECT * FROM posts WHERE author_id = '...';

大きなテーブルで出力が Seq Scan と言うなら、データベースはすべての行を読んでいます — インデックスが効くというサインです。1つ追加すれば Index Scan に切り替わるはずです。これはAIに渡すのに最適な作業です: 遅いクエリと EXPLAIN の出力を貼り付け、どのインデックスを追加すべきか、なぜかを尋ねましょう。あなたはインデックス理論を暗記するのではなく、答えを理解することで主導権を保ちます。

オフラインでも読みたい?

PDF + EPUB + ダウンロード可能なプロンプトライブラリ + バージョンアップデートを入手しよう。

$ PDFを入手 — $39