我研究过 DBMS 索引(稀疏、密集、基于辅助键的索引等)和 DBMS 中的散列(可扩展、线性),但我仍然不了解两者之间的区别。
这两种方法是结合使用还是分别使用?我很困惑,因为这两种方式似乎都是为了让我们快速获取数据,因此我认为一种方式就足够了。
任何人都可以澄清区别吗?
我研究过 DBMS 索引(稀疏、密集、基于辅助键的索引等)和 DBMS 中的散列(可扩展、线性),但我仍然不了解两者之间的区别。
这两种方法是结合使用还是分别使用?我很困惑,因为这两种方式似乎都是为了让我们快速获取数据,因此我认为一种方式就足够了。
任何人都可以澄清区别吗?
我的理解散列是索引的一种。
索引的目的主要是为了让我们加快对数据库的检索。
在一般的开发中,如果数据库查询缓慢,通常的人一般都会看下有没有建索引,或者索引有没有建立正确。
以 MySQL 为例子,MySQL 使用的是 B+ 数的索引,这个是总所周知的内容了。
如果我们觉得 B+ 树的索引不好用的话,我们可以使用另外一种索引,比如说 Hash 索引。
这里有一篇文章是介绍了 2 两种索引。
所以我的理解就是索引是一种定义,可以有多种实现方式。
散列就是其中一种实现方式,但是散列有些问题,所以在实际上使用的并不多。
哈希冲突听过吧。
从下面的表格上来看,我们知道我们最常用的 InnoDB 数据库存储引擎是不支持 Hash 索引的。