Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Bツリーインデックス | セクション
SQL最適化とクエリ機能

bookBツリーインデックス

メニューを表示するにはスワイプしてください

B-treeインデックスは、SQLデータベースで最も広く使用されているインデックス手法であり、そのバランスの取れた構造と効率的な検索機能が評価されています。B-tree(バランス木)は、自己平衡型のデータ構造であり、ソート順を維持しながら、検索、順次アクセス、挿入、削除を対数時間で実行できます。priceテーブルのproductsカラムのようにB-treeインデックスを作成すると、データベースはインデックス化された値をソートした状態で保持する木構造を構築します。この構造により、特定の値や値の範囲に一致する行を、テーブル内のすべての行を検索する場合と比べて、はるかに高速に見つけることができます。

例えば、次のようなクエリを頻繁に実行する場合:

1
SELECT * FROM products WHERE price BETWEEN 200 AND 800;
copy

または

1
SELECT * FROM products WHERE price = 499.99;
copy

price列に対するB-treeインデックスは、データベースがソート済みインデックス内の開始位置を迅速に特定し、全行をスキャンせずに一致するすべての行を取得できるため、これらのクエリの実行速度を大幅に向上させる。

12345678
-- Remove the index if it already exists to avoid errors DROP INDEX IF EXISTS idx_products_price; -- Create a B-tree index on the price column of products CREATE INDEX idx_products_price ON products (price); -- Query to test the index by selecting products in a price range SELECT * FROM products WHERE price BETWEEN 200 AND 800;
copy

B-treeインデックスは、BETWEEN<><=>=などの範囲条件を含むクエリに使用すると、インデックスによってデータベースは下限値に一致する最初の値を効率的に特定し、ソートされた値を上限値まで順にスキャンできます。これは、特に大規模なテーブルで全行を調べるよりもはるかに効率的です。例えば、次のようなクエリの場合:

SELECT * FROM products WHERE price >= 100 AND price <= 500;

B-treeインデックスを利用することで、価格が100以上の最初の商品に直接ジャンプし、500までのすべての商品を素早く取得できます。同じインデックスは、価格がちょうど499.99の商品を探すような等価検索も高速化します。ただし、インデックスを作成しすぎると、INSERTUPDATEDELETEなどの書き込み操作が遅くなる場合があります。これは、基礎データが変更されるたびにすべてのインデックスを更新する必要があるためです。

1. B-treeインデックスの恩恵を最も受けるクエリの種類は何ですか?

2. B-treeインデックスは等価検索と範囲検索の両方に適していますか?

3. テーブルにインデックスを多く作成しすぎるとどうなりますか?

question mark

B-treeインデックスの恩恵を最も受けるクエリの種類は何ですか?

正しい答えを選んでください

question mark

B-treeインデックスは等価検索と範囲検索の両方に適していますか?

正しい答えを選んでください

question mark

テーブルにインデックスを多く作成しすぎるとどうなりますか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  9

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  9
some-alt