2 u013141228 u013141228 于 2015.06.10 09:45 提问

哈希表比二进制有什么优势吗?数据库为什么要选用它?

据说各大数据库都是以哈希表为基础的,但是哈希表不是不能直接寻址吗,存取效率应该比二进制低不少,为什么要选用哈希表而不是直接二进制?

5个回答

caozhy
caozhy   Ds   Rxr 2015.06.10 11:20
已采纳

哈希表是一种折衷。当然,直接寻址是好,问题是,你需要一种数据结构,还能不断添加、删除、修改吧。
再说,寻址是文件的角度来说的,和哈希表没有关系。
数据库用哈希表,当然不全用哈希表,同时数据库也是用的二进制文件。这不矛盾。我说的二进制是相对文本文件来说的。确切地说法,不是二进制,而是随机文件。
所谓随机文件,就是你可以随机定位和访问的文件。文本文件不是随机文件,比如说读取文本第100行,你没办法知道第100行的地址,或者说相对文件头,它中间隔了多少字符,你只能从头读取一次,这样效率很低。
所有的数据库,都使用二进制文件(当然,二进制文件也有不能随机访问的),或者进一步说,是随机文件作为基本的文件格式。
在此之上,用什么算法,比如哈希表、索引、簇等等,那是另一回事了。

bdmh
bdmh   Ds   Rxr 2015.06.10 09:47

哈希表可以根据key值直接找到对象,这点效率高,二进制不行啊,你要找一个东西,就要自己定位

tianwenfenghaha
tianwenfenghaha   2015.06.10 10:02

你想一下,你是想调用一个不知道其中元素的数组,还是想调用一个有明确key值的HashMap。如果数组非常大,即使知道其中元素,下标也不好确定

oyljerry
oyljerry   Ds   Rxr 2015.06.10 11:15

哈希表主要是一个映射表,所以可以O(1)的复杂度找到数据。

Arnold9009
Arnold9009   2015.06.11 10:18

简单的说,你要查一条记录,怎么根据关键字找到地址呢? 哈希表算是比较有效率的方法了

Csdn user default icon
上传中...
上传图片
插入图片