【问题标题】:Hibernate performance issue: query execution extremely slowHibernate 性能问题:查询执行速度极慢
【发布时间】:2013-02-13 20:28:37
【问题描述】:

以下休眠查询用于通过传入 catId 和 inventoryId 来获取 ProductCatalogue 记录列表

select prodcat from ProductCatalogue prodcat where prodcat.prodSec.prodId=:catId and prodcat.prodPlacedOrder.inventoryId=:inventoryId

表 ProductCatalogue 和 ProdPlacedOrder 是具有 30 万条以上记录的表。 inventoryId 是 prodOrder 表中的一列,prodPlacedOrder 是 prodOrder 表的扩展。

这个查询在执行时需要很多时间,而且单个休眠查询会触发许多复杂的 sql 查询。

关于可能是什么问题以及如何修改它以使查询执行得更快的任何建议?

【问题讨论】:

  • 您是否检查过底层 SQL(即独立于休眠运行它?) - 您在表上有哪些索引?
  • 您如何确定查询会触发许多复杂查询?会不会是以下几行使用将它们击退的结果?
  • @JoachimIsaksson 来自 show_sql 日志。不是这个特定的查询本身

标签: java sql performance hibernate


【解决方案1】:

如果没有更多信息很难说,但如果您不需要该表中的任何数据,请尝试将 ProdPlacedOrder 设置为 LAZY fetch。

还提到了 phatmanace - 检查您的索引。

【讨论】:

  • 据我所见,除了prodcat 之外的所有内容都已延迟加载。
猜你喜欢
  • 2016-02-29
  • 2018-04-17
  • 2012-11-10
  • 2017-08-29
  • 1970-01-01
  • 2023-02-20
  • 1970-01-01
  • 1970-01-01
  • 2016-06-08
相关资源
最近更新 更多