首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ucanaccess太慢了

Ucanaccess太慢了
EN

Stack Overflow用户
提问于 2016-04-27 08:03:07
回答 2查看 2.2K关注 0票数 0

我正确地添加了所有必要的罐子:

  • Ucanaccess 3.0.4
  • commons-lang-2.6
  • commons-logging-1.1.1
  • hsqldbd
  • jackcess-2.1.3

我的数据库是100 My。当只使用Jacksess时,相同的查询需要4-5秒,而这个查询大约需要1-2分钟。我做了一些研究,发现Ucanaccess反映了整个数据库。我怎么能让它失效呢?还是有必要?

我也尝试了参数(内存、singleConnection、skipIndexes),但没有改变任何东西。

我必须使用UcanAccess,因为我想使用JasperReports。为此,我需要一个有效的连接。

我的代码:

代码语言:javascript
复制
        try {
        Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
        String connectionURL = "jdbc:ucanaccess://P:/myDatabase.accdb";
        Connection conn = DriverManager.getConnection(connectionURL, "", "");
        Statement stmt = conn.createStatement();

        String query =
                "Select * from REQ_ACQ_ACQUISITIONS";


        ResultSet rs = stmt.executeQuery(query);
        while ( rs.next() ) {
            int numColumns = rs.getMetaData().getColumnCount();
            for ( int i = 1 ; i <= numColumns ; i++ ) {
                if (i > 1) System.out.print(",  ");
                String columnValue = rs.getString(i);
                System.out.print(columnValue + " " + rs.getMetaData().getColumnName(i));
            }
            System.out.println("");
        }
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
EN

回答 2

Stack Overflow用户

发布于 2016-04-27 14:51:38

注意,这并不是真正的“连接时间”,而是整个JVM生命中第一个连接的时间。因此,这是一个启动时间,类似于数据库启动时间。以下所有的联系都将是即席的。有几种方法可以戏剧性地减少第一次连接的时间。最简单的方法是构建过滤器数据库,将报表所需的唯一表作为外部表链接起来。

票数 3
EN

Stack Overflow用户

发布于 2021-09-16 05:39:10

对我来说,我也遇到了类似的问题,但主要是因为在我的代码中,在运行查询之后,我从未关闭过连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36883855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档