0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#0079(2024/03/25)データベースにおけるB-treeインデックス

Posted at

データベースにおけるB-treeインデックスとは?

データベースのパフォーマンスを最適化するために広く使われているのが「B-treeインデックス」です。本記事では、B-treeインデックスの仕組みや特性、メリット・デメリットを具体例と共に解説します。


🔹 B-treeインデックスとは?

B-tree(Balanced-tree、バランス木)は、データベース内で大量のデータから迅速に目的のデータを探し出すために使われるツリー構造です。データはソートされた状態で保持され、検索やソート処理を効率よく行うことができます。


🔹 B-treeインデックスの構造

B-treeは主に以下の3つのノードから構成されています。

  • ルートノード (Root Node):最上位に位置し、検索の起点。
  • 内部ノード (Internal Node):ルートと葉の間に位置し、データ検索を左右のノードへ誘導。
  • 葉ノード (Leaf Node):実際のデータまたはデータへのポインタを格納。

以下の図は簡略化したB-treeの構造例です。

            [50]
           /     \
 [10, 20, 30]    [60, 70, 80]

全ての葉ノードが同じ深さを持つことで、検索性能が安定します。


🔹 B-treeインデックスの検索の仕組み(具体例)

例えば、以下のデータを考えます。

[10, 20, 30, 40, 50, 60, 70, 80]

B-treeインデックスで整理すると、以下のようになります。

         [40]
        /    \
[10,20,30] [50,60,70,80]

ここで、「70」を検索すると、

  1. まずルートの「40」を見て、70は40より大きいため右側のノードへ。
  2. 次のノードで即座に「70」を見つけられます。

この仕組みにより、大量のデータでも非常に高速に目的のデータを見つけられます。


🔹 B-treeインデックスのメリットとデメリット

メリット

  • 完全一致検索が高速になる。
  • 範囲検索(例:日時の範囲指定など)にも非常に有効。
  • データがソートされているため、並べ替え処理にも効率的。

デメリット

  • 部分一致検索(LIKE '%abc%'など)や全文検索には適さない。
  • 更新頻度が非常に高い場合、インデックスの再構築に伴うオーバーヘッドが発生。

🔹 B-treeインデックスの使用例(SQL)

実際にSQLでインデックスを作成する例を見てみましょう。

-- インデックスを作成する例
CREATE INDEX idx_employee_name ON employees (name);

このインデックスにより、以下のようなクエリの実行速度が向上します。

SELECT * FROM employees WHERE name = '佐藤';
SELECT * FROM employees WHERE name BETWEEN 'あ' AND 'か';

🔹 まとめ

B-treeインデックスはデータベースの検索やソート性能を大幅に向上させるための重要な仕組みです。特に、大規模データベースや検索処理の多いシステムでの利用に適しています。B-treeインデックスの特性を理解して、データベース設計やパフォーマンスチューニングに役立てましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?