索引是高效获取排序好的数据结构
索引本身就是数据一部分关键信息,通过索引大大减少索引的数据量。
索引信息需要额外的空间存储。创建和维护索引本身也会降低对数据的操作性能。
索引的数据结构一般有:
- 二叉树
- 红黑表
- hash表
- B-Tree和B-树
hash表
键值的集合,通过键(key)即可快速取出对应的值(value),接近 O(1)
// 哈希算法
hash = hashfunc(key)
index = hash % array_size
- Hash冲突问题(需要设计更好的哈希算法和更大的空间分散)
- Hash 索引不支持顺序和范围查询(Hash 索引不支持顺序和范围查询是它最大的缺点