我正在使用 Servlet 构建 Java EE Web 应用程序。
在 servlet 中,我需要对 Oracle 数据库执行一系列 (30) 查询。
查询都是这种类型:count(*) from TABLE where CONDITIONS。
每个查询需要 1 秒,不算多,但总时间为 30-35 秒:太多了!
您知道如何提高查询的性能吗?
有没有办法并行运行它们?
我正在使用 Servlet 构建 Java EE Web 应用程序。
在 servlet 中,我需要对 Oracle 数据库执行一系列 (30) 查询。
查询都是这种类型:count(*) from TABLE where CONDITIONS。
每个查询需要 1 秒,不算多,但总时间为 30-35 秒:太多了!
您知道如何提高查询的性能吗?
有没有办法并行运行它们?
您可以尝试对 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 应用程序执行的插入/删除操作,并使用调度程序在后台从数据库中逐次刷新缓存。