EN - FR - DE - ES - IT - PT -

LexiconDream

📇 インデックス

データベースレコードの取得を高速化するデータ構造。

インデックス

インデックスはデータ検索を高速化します。インデックスがない場合、データベースは一致するレコードを探すためにすべての行をスキャンします。インデックスがあれば、関連する行に直接ジャンプできます。インデックスは、値を場所にマッピングする独立したデータ構造です。本の索引も同じ仕組みです。用語を検索してページ番号を見つけますが、それを見つけるためにすべてのページを読む必要はありません。データベースも同じことを行います。

インデックスにはコストがかかります。スペースを消費し、インデックスも更新する必要があるため、挿入、更新、削除の速度が低下します。書き込みのコストも高くなります。利点は、読み取りが高速化されることです。読み取り負荷の高いワークロードでは、インデックスは不可欠です。書き込み負荷の高いワークロードでは、インデックスが多すぎるとパフォーマンスが低下します。どの列にインデックスを作成するかを選択するには、クエリのパターンを理解する必要があります。WHERE句、JOIN条件、ORDER BY句で使用される列は、適切な候補です。ブールフラグのようにカーディナリティの低い列は、インデックスによって検索範囲があまり絞り込まれないため、適切な候補ではありません。複合インデックスは複数の列をカバーし、複数のフィールドでフィルタリングするクエリに対応できます。複合インデックス内の列の順序は重要です。データベースは、先頭の列に対するクエリには複合インデックスを使用できますが、末尾の列のみに対するクエリには使用できません。インデックス設計はトレードオフです。目標は、書き込みを必要以上に遅くすることなく、重要なクエリの速度を向上させることです。

インデックスの種類

インデックスは一種のショートカットです。書き込み速度とストレージ容量を犠牲にして、読み込み速度を向上させます。読み込み速度が最も重要な場面で活用しましょう。


Warning: session_start(): Cannot start session when headers already sent in /var/www/lexicondream.com/inc/functions.php on line 63

Comments (3)

  1. Derek S.
    Database indexes are a tradeoff. They speed up reads but slow down writes and take up space. Knowing when to add one is an art.
  2. Pam L.
    A primary key automatically creates an index. That's something a lot of beginners don't realize.
  3. Chris T.
    Without an index the database has to scan every row. With one it can jump straight to the data. Huge performance difference.

Leave a comment