【问题标题】:Native query in Spring Boot / Hibernate much slower than executed externallySpring Boot / Hibernate 中的本机查询比外部执行慢得多
【发布时间】:2018-01-21 12:10:35
【问题描述】:

我有多个使用entityManager.createNativeQuery(sqlQuery).getResultList() 执行的查询,这些查询需要数十秒(最多几分钟)才能执行。我启用了 Hibernate 日志记录,并在连接到同一个数据库的 IntelliJ 中执行了完全相同的 SQL 查询。查询在不到 10 毫秒内返回。

数据库是嵌入H2的,数据库驱动是一样的。查询不包含任何参数(这消除了this)。它们只返回整数(ID 和计数)。如果我连续两次执行查询,则第二个查询几乎立即返回。无论我给JVM分配128M还是2048M,查询执行时间都是一样的。

查询看起来并不太复杂。我唯一注意到的是,其中一些具有我加入或与之比较的内部选择语句。我猜它们不是真正的问题,因为当不从我的程序中执行时,它们可以非常快速地执行。

程序的其余部分运行良好,还有其他查询运行速度与预期一样。

这是一个示例查询:

SELECT
  USER_ID,
  count(result) AS count
FROM USERAPIACCESS
WHERE USER_ID IN (123)
      AND RESULT IN ('SUCCESSFUL')
GROUP BY USER_ID, RESULT
ORDER BY USER_ID, RESULT

【问题讨论】:

    标签: java spring hibernate h2


    【解决方案1】:

    这张表有多少条记录? 我认为问题在于您在这里没有分页,应用程序去获取该表中存在的所有记录

    【讨论】:

    • 几万。如果只提取十行整数,这有什么关系呢?
    • 你确定只有十行获取表单数据库?
    猜你喜欢
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    相关资源
    最近更新 更多