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