gpt4 book ai didi

performance - hibernate 查询与条件性能

转载 作者:行者123 更新时间:2023-12-03 15:08:38 26 4
gpt4 key购买 nike

我最近有一个相当奇怪的现象。必须获得一个包括具有不同WHERE条件的多个表上的联接的计数。我首先使用 hibernate 的条件API实现了查询。它正确创建了请求的准备好的SQL语句,但是速度很慢。然后使用HQL重新实现整个查询。这样做很讨厌,但是结果执行速度比使用Criteria API快得多。有人知道这种行为的原因吗?我假设Criteria和HQL框架使用相同的代码库将其转换为SQL。

这是查询:

select count(*) from R r where r.ISREPLACEDBY = 0 
and r.STATUS='OK' and r.A = ?
and r.C in
(select distinct RC from CX cx where cx.FROMDATE >= ? and cx.FROMDATE <=?)

最佳答案

我想我终于找到了原因。似乎每次执行准备好的语句时,条件api都会创建新的变量名称。每次执行该语句时,数据库(在我们的示例中为DB2)都会计算出一个新的查询执行计划。另一方面,HQL使用相同的变量名,从而允许数据库重新使用查询执行计划。

关于performance - hibernate 查询与条件性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1784631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com