常见的索引结构有:
B-树索引:这是一种多路平衡查找树。
在数据库中,B-树的每个节点可以存储多个键值对以及指向子节点的指针。其特点是能够保证数据在树中是有序存储的,查询时可以通过比较键值,从根节点开始快速定位到目标数据所在的节点,适用于范围查询和等值查询 。例如在 SQL 查询中,SELECT * FROM table WHERE column >= value1 AND column <= value2这样的范围查询,B-树索引能高效工作。
B+树索引:是 B-树的一种变形树。
B+树所有的叶子节点包含了全部的键值以及指向数据记录的指针,并且叶子节点之间通过双向链表相连。非叶子节点仅作为索引,不存储实际数据。这种结构使得范围查询更加高效,因为只需要遍历叶子节点链表即可。对于数据库的排序操作等也很有帮助,比如SELECT * FROM table ORDER BY column。
哈希索引:基于哈希表实现。
它通过对索引键进行哈希运算,将键值映射到哈希表的某个位置,从而快速定位数据。哈希索引在等值查询时非常迅速,因为只需要一次哈希计算就能找到数据所在位置。但它不支持范围查询,因为哈希值与数据的顺序无关。
哈希表结构适用场景:
哈希表结构适用于等值查询非常频繁的场景。
例如在缓存系统中,经常需要根据某个唯一标识(如用户ID)快速获取缓存数据。由于哈希表可以在常数时间复杂度(理想情况下)内完成查找操作,所以能够快速定位到对应的数据项,大大提高查询效率。另外,在一些需要快速判断某个元素是否存在的场景中,哈希表也很适用,比如在统计单词出现次数的程序里,快速判断一个单词是否已经统计过。