-1

我正在使用 Servlet 构建 Java EE Web 应用程序。

在 servlet 中,我需要对 Oracle 数据库执行一系列 (30) 查询。

查询都是这种类型:count(*) from TABLE where CONDITIONS

每个查询需要 1 秒,不算多,但总时间为 30-35 秒:太多了!

您知道如何提高查询的性能吗?

有没有办法并行运行它们?

4

1 回答 1

1

您可以尝试对 30 个进行查询:

select
  (select count(*) from tbl_table1 where ...) as table1_cnt,
  (select count(*) from tbl_table2 where ...) as table2_cnt,
  ...
  (select count(*) from tbl_table30 where ...) as table30_cnt
from dual;

如果这没有帮助并且您无法更改数据库,则剩下一件事。在 Java 端缓存查询结果,在缓存中跟踪 Java 应用程序执行的插入/删除操作,并使用调度程序在后台从数据库中逐次刷新缓存。

于 2013-01-26T20:33:52.397 回答