JPA / Hibernate查询执行时间过高

时间:2017-05-23 10:03:04

标签: mysql hibernate jpa spring-data jpql

我正在与Spring Data 4.3.7供应商合作Hibernate。我的数据库是MySQL 5.2.5。我有一个带有3个交叉连接的查询(用JPQL开发),查询被调用数千次。随着呼叫次数的增加,其平均运行时间也会增加。为什么他的时间会随着调用次数的增加而增长? 你能帮帮我吗?

这是查询:

select distinct attrrelaen3_.atwrt as col_0_0_, attrrelaen3_.msehi as col_1_0_,
from A articolian0_ cross join B catalogore1_ cross join C templateen2_ cross join D attrrelaen3_
 where articolian0_.cod_mat='XXXX' and 
 catalogore1_.pk_document=articolian0_.pk_document and 
 catalogore1_.begda<=CURRENT_DATE and 
 catalogore1_.endda>=CURRENT_DATE and (catalogore1_.pk_document_chld like 'ZCS%') 
 and templateen2_.template=catalogore1_.zzcattemplate and templateen2_.caratt=attrrelaen3_.atinn 
 and attrrelaen3_.pk_oggetto=articolian0_.cod_mat and attrrelaen3_.begda<=CURRENT_DATE 
 and attrrelaen3_.endda>=CURRENT_DATE 
 order by templateen2_.msehi  ASC

1 个答案:

答案 0 :(得分:0)

对于初学者 - 从CLI或SQL工作台手动运行完全相同的查询并比较执行时间。如果它们相似 - 您知道您的查询要么严重优化,要么缺少某些索引。您必须运行explain query才能获得详细信息。

总而言之,您肯定会知道问题出在ORM或DB本身。