MSSQL查询执行计划缓存和JDBC

时间:2018-04-18 10:37:46

标签: sql-server caching jdbc jdbctemplate sql-execution-plan

我正在使用基于Java的Web应用程序,我们使用Microsoft SQL Server作为数据库服务器。在那里,我们有几个长时间运行的SQL查询,我们正在寻找提高这些查询性能的选项。

当我开始阅读有关查询性能改进的内容时,我发现SQL Server会缓存查询执行计划,并且下次它可以从缓存中重用它而无需创建新的执行计划。我在SET STATISTICS TIME ON;的MSSQL管理工作室控制台上尝试了它,它清楚地表明SQL Server缓存了执行计划。它是否会自动发生在JDBC中?或者我们是否需要遵循任何具体说明?我试着用谷歌搜索运气。

1 个答案:

答案 0 :(得分:1)

是的,它发生在JDBC上。只需注意并使用带有绑定变量的预准备语句(https://docs.oracle.com/javase/8/docs/api/java/sql/PreparedStatement.html)。例如:

select * from tab where col = 'somevalue'

与以下不同:

select * from tab where col = 'someothervalue'

但两者在编写为:

时可以使用相同的计划
select * from tab where col = ?