ハッシュインデックス
メニューを表示するにはスワイプしてください
ハッシュインデックスは、SQLデータベースにおける等価検索の高速化を目的とした特殊なタイプのインデックス。B-treeインデックスがデータをバランスの取れた木構造で整理するのに対し、ハッシュインデックスはハッシュ関数を用いてキー値をインデックス内の特定の位置(「バケット」)に直接マッピングする。
たとえば、productsテーブルで特定の商品名を検索する場合、ハッシュ関数が該当するバケットを迅速に特定するため、値の正確な一致を探すクエリ(例:WHERE name = 'Apple iPhone 14')に対して非常に高速。
ただし、ハッシュインデックスは範囲検索やソートには適さない。これは、ハッシュ関数がインデックス化された値の順序を保持しないため。
123456789-- Drop the hash index if it already exists to avoid errors DROP INDEX IF EXISTS idx_products_name_hash; -- Create a hash index on the name column of the products table CREATE INDEX idx_products_name_hash ON products USING HASH (name); -- Test the effect of the index by searching for a specific product by name SELECT * FROM products WHERE name = 'Apple iPhone 14';
ハッシュインデックスは、クエリが等価条件で列を頻繁に検索する場合、特にデータセットが大きく、列の値が一意またはほぼ一意である場合に、顕著なパフォーマンス向上をもたらす。たとえば、アプリケーションが商品名の完全一致で商品を検索する場合、name列にハッシュインデックスを作成することで、等価検索においてB-treeインデックスよりも高い性能を発揮。ただし、"A"から"M"までの商品名を検索するなどの範囲検索や、結果のソートが必要な場合は、B-treeインデックスの方が効果的。ハッシュインデックスは、順序付きの走査や範囲検索ではなく、ポイントルックアップが多いワークロードに最適。
1. ハッシュインデックスが最も適しているクエリの種類は何ですか?
2. ハッシュインデックスは範囲検索に利用できますか?
3. B-treeインデックスと比較した場合のハッシュインデックスの制限は何ですか?
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 11
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 11