开发。环境:BEGIN
FOR tab2_rec IN (SELECT *
FROM table_2)
LOOP
UPDATE table_1
SET var_txt_value = REPLACE(var_txt_value, tab2_rec.old_plan_id, tab2_rec.new_plan_id)
WHERE var_name = 'Plan_ids';
END LOOP;
END;
/
驱动程序:Spring Boot 1.5 + Hibernate + SQL Server 2014
每当我查询一个表时,Hibernate几乎立即返回数据。 但是,当我在同一个数据库中查询View时(但View被定义为从另一个数据库中获取数据),它似乎总是需要永远。
每次查询需要2秒钟,当需要从数据库中检索100条记录时,这是不可接受的。因此,我将代码更改为使用Microsoft Driver [version: mssql-jdbc 6.2.1.jre8]
,以便将数据库跳转限制为1。然而,尽管此查询与之前的8分钟相比非常快,但现在仍然需要30秒,这仍然是不可接受的。
以下是我到目前为止所尝试的内容:
IN(List<String> queryParamList)
而不是让Spring Data / Hibernate构建查询。@Query
(从此省略了Constructor
字段。)@Transient
。以上都没有帮助减少响应时间。
当我从控制台输出中复制Hibernate查询并针对SQL Server Management Studio中的View运行时,结果将立即返回。
当我监视数据库上的活动时,只要在IDE中执行该行,我就会看到它在数据库中弹出&#39;活动监视器。它只是坐在那里30秒,然后返回数据。甚至SQL Server也将此视为昂贵的查询。
我还能尝试什么?有什么建议吗?
非常感谢任何见解/帮助。非常感谢你提前。
修改: 数据源配置。在application.properties :
CRUDRepository
控制器代码:
spring.datasource.url=jdbc:sqlserver://MRR-SQL8:1433;database=ECA2;sendStringParametersAsUnicode=false
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.hibernate.dialect=org.hibernate.dialect.SQLServer2014Dialect
来自控制台输出的Hibernate查询:
empCandidate.setEmpView(empViewRepository.findOne(empCandidate.getApplication().getEmpNumber()));
根据结果集的大小,执行时间不断增加。现在,对于2000记录的结果集,需要30秒。