【问题标题】:sql query very slow in Hibernate, fast on mysqlsql查询在Hibernate中很慢,在mysql上很快
【发布时间】:2017-02-14 14:19:23
【问题描述】:

我有一个非常简单的查询来从表中选择所有行。在休眠状态下,它总是需要大约 17-18 秒。我指定,show_sql 是真的。我直接将sql命令复制到mysql,耗时0.00022秒……

这是查询:

SELECT 
    organizati0_.id AS id1_5_,
    organizati0_.adminList AS adminLis2_5_,
    organizati0_.demoAccount AS demoAcco3_5_,
    organizati0_.disabled AS disabled4_5_,
    organizati0_.enduserCredits AS enduserC5_5_,
    organizati0_.name AS name6_5_,
    organizati0_.pushNotificationRoom AS pushNoti7_5_,
    organizati0_.totalLicenses AS totalLic8_5_,
    organizati0_.usedLicenses AS usedLice9_5_
FROM
    organization organizati0_

这是查询代码:

Session session = ThreadSessionHolder.getThreadSession();
Query query = session.createQuery("from Organization ");
List list = query.list();
return list;

有什么想法吗?这让我发疯了

【问题讨论】:

  • 这更有可能是从服务器检索数据并在此处创建错误的 java 对象。请注意,您正在拉动整个表格
  • 组织实体上有关联吗?难不成他们中的一些人是急切的?记录数是多少?
  • 如果您在 MySql 上进行查询总是会很快,那么当您要求 hibernate 返回整个表时,请考虑每个组织对象的创建。你可以放上你的组织表,看看我们是否可以让它表现得更好,比如如果你有一些关系,你可以把它们设置为惰性,你的组织对象会更轻。
  • 我所有的引用都用惰性获取进行了注释。和@JamesJithin,我已经完成了那里的每一个答案......

标签: java mysql hibernate


【解决方案1】:

我发现了问题。

我在构造函数中执行了一个初始化操作,当全选时不应该这样做

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 2021-12-13
    • 2011-06-27
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多