当前位置: 首页 > 知识库问答 >
问题:

Java应用程序运行查询的时间比查询浏览器长

罗寒
2023-03-14

当我在查询浏览器和我的应用程序中运行相同的查询时,我会得到很大的时间差。查询浏览器运行查询只花了2秒。但在我的应用程序中,它需要20秒。实际上,我正在处理12L的记录。我使用的是sql server数据库,在我的应用程序中使用了本机sql(JDBC)API。我指的是natve语句和resultSet API来获取记录。我在这里复制了我的代码片段。

另外,我使用了相同的查询条件与相同的用户。

//------------------------ COUNT QUERY ------------------------------------
//It is taking 2 seconds in query browser but in my application takes 17 seconds

    try {
         String executeQry = "select count(id) from temp where some condition";
          statement = m_jdbcConnection.prepareStatement(executeQry);
          resultSet = statement.executeQuery();
          while (resultSet.next()) {
             totalCount = resultSet.getInt(1);
          }
     } catch (Exception e) {
        //
    }

//------------------------ RESULTSET QUERY ------------------------------------ //It is taking 2 seconds in query browser but in my application takes 20 seconds

try {
       String executeQry = "select ID,NAME,... from temp where some condition"; //Used rownumber to limit.
       statement = m_jdbcConnection.prepareStatement(executeQry, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
        resultSet = statement.executeQuery();

      while (resultSet.next()) {
        //PROCESS THE RESULTSET
     }
  } catch (Exception e) {
 //

我的代码中有什么错误要处理吗?或者我需要改进的任何逻辑(任何缓存概念-语句缓存或结果集缓存)。请建议我在处理大数据时需要注意哪些事项(Java级)

共有1个答案

葛阳华
2023-03-14

如果查询中有任何注释,请在执行查询之前将其删除。

我最近遇到了这个问题,并注意到我的查询中有注释。为。

String query ="Select count(id) from table where emp = :emp -- and dept = :dep";

这里,--后面的字符串值是comment。由于存在这些类型的注释,我的查询从Java执行时需要花费大量时间,而从sql Developer执行时只需要几秒钟。

当我移除评论时,查询很快就运行了,在2-3秒内我就得到了结果。

我知道这个帖子是旧的,但我希望它能帮助其他用户。

 类似资料:
  • 我正在探索Azure CosmosDB,在理解如何查询我的收藏时遇到了问题。我创建了一个web应用程序来添加和查询数据,但我想在Azure中搜索,不知道如何构造查询。 目前,我查询我的集合以返回所有内容。 这将返回大量信息。下面是数据的示例。 有没有办法只查询某个“searchTerm”(我的CosmosDB中的一个字段)。我似乎无法掌握过滤我的查询的语法。我已经尝试了在SQL中看起来有意义的东西

  • 问题内容: 我想请一台我知道其IP的服务器将日期和时间发送给客户端。 如何用Java实现呢? 问题答案: 描述细节的文章:http : //www.informit.com/articles/article.aspx? p=26316&seqNum =3 客户端http://commons.apache.org/net/apidocs/org/apache/commons/net/ntp/NTPU

  • 我目前使用的是mysql 我有两个名为person和zim_list_id的表,这两个表都有超过200万行

  • 时间比较 使用where方法 where方法支持时间比较,例如: // 大于某个时间 where('create_time', '> time', '2016-1-1'); // 小于某个时间 where('create_time', '<= time', '2016-1-1'); // 时间区间查询 where('create_time', 'between time', ['2015-1-1'

  • 问题内容: 说我长时间运行更新查询 some_table中的modification_time的值是什么?它们是相同还是不同(例如,执行查询花了2天的时间)。 如果它们不同,如​​何编写此查询以使它们都相同? 问题答案: 它们都是一样的,因为NOW()在查询开始时被锁定了。 答案太短了吗? 好的,更多信息有关NOW()的MySQL参考 NOW()返回一个 恒定时间 ,该时间指示该语句 开始执行的时

  • 我正在使用Saxon 9.0.4,并在我的Eclipse项目中包含了Home Edition jar。但是每当我发出查询字符串时,什么也没有发生,我也没有得到任何输出。当我从命令行使用以下命令时,我得到了正确的结果: 以下是我的疑问: 这是我使用的代码: 我哪里做错了?此外,是否可能从字符串而不是文件中获得输入?