这是一个面试问题:“您会使用哪种数据结构来检查数据库中是否存在记录?”
我的第一 react 是二叉搜索树。
面试官没有评论,继续下一个问题。这个问题的答案是什么?
最佳答案
有很多可以接受的答案,在这样的面试中,迅速而自信地提供一个可以接受的答案比给出完美的答案更重要。
Binary trees绝对是一个有效的答案。恭喜你!
但是对于数据库, B-trees (“B”代表“平衡”)会更加推荐。 B 树是二叉树的推广,其中每个节点都有两个以上的子节点。这使得该数据结构更有效地优化磁盘读取访问。该结构还需要比二叉树更少的重新平衡,这也意味着更少的磁盘写入访问。
如果您对性能考虑感兴趣,this SO answer对两种结构进行了有趣的比较。
现在,只是为了记录,在一些应用领域有更专业的结构,例如R-trees对于 3D 空间数据,或者哈希表,如果您考虑寻找唯一键并准备牺牲一些空间来提高速度。
编辑:一些流行数据库的例子(不详尽!):
- sqllite使用 b 树(并且有一个 r 树扩展)
- BerkleyDB使用 B 树和哈希索引
- MySQL使用 B 树和哈希(ans 也有 r 树)
- Postgresql使用 B 树、r 树、哈希和其他几种
- SQLserver显然也使用 B 树
关于java - 数据结构 : Checking if a record exists in a database?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28420779/