我已经学习了DBMS中的哈希(可扩展、线性)和索引(稀疏、稠密、基于次要键等),但是我无法理解哈希和索引之间的区别。这两种技术是一起使用还是只用其中之一?我感到困惑,因为这两种技术的目的似乎都是为了使我们能够快速检索数据,所以我认为只要其中之一就足够了。
有人能澄清一下它们之间的区别吗?
什么是索引?
索引是一种在多个字段上对一定数量的记录进行排序的方法。在表中某个字段上创建索引会生成一个新的数据结构,其中包含了该字段的值以及指向其所关联的记录的指针。该索引结构随后被排序,从而可以在其上执行二分查找。
什么是哈希?
哈希是将一串字符转换为通常较短的固定长度值或关键字的过程,这个值或关键字代表原始字符串。哈希用于索引和检索数据库中的项,因为使用较短的哈希关键字查找项比使用原始值更快。
我想这可能会消除您的疑虑。
哈希是一种索引:它可以用来根据关键字定位记录,但不保留任何记录的顺序。基于哈希,无法迭代到后继或前驱元素。然而,在数据库的上下文中,索引会执行此操作。
哈希是一种高级搜索技术,即将大数据转换为小数据项并存储在表中。但索引和二分搜索属于线性搜索。
此外,索引用于将多个字段的组合制作成索引(键)
定义上的区别
索引是一种数据结构技术,根据某些属性在数据库文件中高效地检索记录。另一方面,哈希是一种有效的技术,可以计算出数据记录在磁盘上的直接位置,而不使用索引结构。因此,这是索引和哈希之间的主要区别。
功能上的区别
索引使用数据引用,保存具有与键对应的值的磁盘块的地址,而哈希使用称为哈希函数的数学函数来计算数据记录在磁盘上的直接位置。因此,这也是索引和哈希之间的一个重要区别。
索引和哈希之间的另一个区别是,哈希对于大型数据库的处理比索引更加有效。