java - 数据结构 : Checking if a record exists in a database?

标签 java c++ database data-structures

这是一个面试问题:“您会使用哪种数据结构来检查数据库中是否存在记录?”

我的第一 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/

相关文章:

c++ - 在 Qt4 应用程序中使用 user32.dll 中的函数

Django:通过ID获取最后一条记录[多对一关系]

java - 如何使用 Java 在 selenium webdriver 中绕过或处理 Windows 身份验证

java - 使用mockito captor捕获发送到方法的参数

c++ - std::vector 和 std::min 行为

database - 未完全指定的日期常量

database - 为 postgres 查询设计索引

java - Gradle buildConfigField 非法前向引用

java - 在 Xtext 大纲 View 中隐藏父节点

c++ - 在 SDL 1.2 中移动 SDL 窗口