我正在与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
答案 0 :(得分:0)
对于初学者 - 从CLI或SQL工作台手动运行完全相同的查询并比较执行时间。如果它们相似 - 您知道您的查询要么严重优化,要么缺少某些索引。您必须运行explain query
才能获得详细信息。
总而言之,您肯定会知道问题出在ORM或DB本身。