如何提高oracle中简单选择查询的性能

Ash*_*ngh 5 java oracle oracle11g

我最近参加了面试,被问到一个问题

我们有一张桌子employee(id, name)。在我们的 java 代码中,我们正在编写一个逻辑来从这个表中获取数据并将其显示在 UI 中。查询是

Select id,name from employee

查询是在调试期间,我们发现这个 jdbc 调用来触发查询并获取输出需要 20 秒,我们希望将其减少到 5 秒或最佳时间。我们怎么做,或者我将如何解决这个问题?

由于where clause查询中没有,我不建议对该列进行索引。由于此逻辑每次都需要 20 秒,因此,其他一些代码也无法锁定此表。我建议限制从表中获取的记录数量应该会有所帮助,但面试官看起来并不相信

作为开发人员,我们还能做些什么来优化调用。我猜 DBA 可能会调整数据库设置以提高此查询的性能,但还有其他方法吗

Ste*_*n C 3

好的,这是一个面试问题,所以问题和解决方案都是假设的。面试官询问可能的优化和/或方法。以下是一些最有可能有帮助的内容:

  • 修改查询以对数据进行分页,而不是获取全部数据。这看起来适用于示例查询。请注意,这不仅仅是“限制从表中选择的行数” ......这可能就是为什么当你这么说时面试官看起来很怀疑!

  • 如果您确实需要显示整个选定的记录集,但以简化的形式(例如求和、平均、排序、整理等),请在查询中进行简化,而不是通过获取记录并在客户端中执行此操作。

  • fetchSize()按照 Ivan 的建议进行调整。

以下是一些不太可能有帮助和/或需要大量修改的其他想法。

  • 查看网络配置。例如,您可以通过操作系统级别调整 TCP 缓冲区或优化物理或虚拟网络路径来获得更好的吞吐量。
  • 在数据库服务器本身上运行查询(以消除网络开销)
  • 使用内存表
  • 查询辅助数据库服务器;例如只读快照或从属