2013-02-13 97 views
0

以下Hibernate查询被用来获取的器产品目录记录列表,在CATID和inventoryIdHibernate的性能问题:查询执行极其缓慢

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

的表器产品目录和ProdPlacedOrder与3个十万表+记录。 inventoryId是prodOrder表中的列,prodPlacedOrder扩展了prodOrder表。

这个执行查询需要很多时间,单个hibernate查询会关闭许多复杂的sql查询。

有关可能存在什么问题以及如何对其进行修改以使查询执行速度更快的建议?

+0

你有没有检查过低的SQL(即通过独立运行它的休眠?) - 你有哪些索引在表上? – phatmanace 2013-02-13 20:30:39

+0

你如何确定查询引发了许多复杂的查询?可以用以下几行来表示将它们击落的结果? – 2013-02-13 20:41:36

+0

@JoachimIsaksson从show_sql日志。没有它的这个特定的查询本身 – Chillax 2013-02-13 20:45:24

回答

0

很难说,没有更多的信息,但尝试制作ProdPlacedOrder作为LAZY获取,如果你不需要从该表中的任何数据。

也作为phatmanace,提到 - 检查您的指数。

+0

从我所看到的,除了'prodcat'之外的所有东西都已经被加载。 – 2013-02-13 20:56:10