使用存储过程进行插入/更新/删除/选择有什么好处?

Hei*_*upp 5 database jdbc

我目前正在查看一些通过运行存储过程执行甚至微不足道的插入/选择/更新的代码。

所以代码基本上是

CallableStatememt stm= jdbcConnection.prepareCall(sp_name with ??) ;
stm.setParameters()
stm.execute();
Run Code Online (Sandbox Code Playgroud)

正如我之前所说,sp_name 背后的代码大多是微不足道的。没有多表插入或复杂的计算。

只做有什么好处吗

Statement stm = jdbcConnection.prepareStatement(insert_query)
stm.setParameters();
stm.execute();
Run Code Online (Sandbox Code Playgroud)

这里insert_query是一个“正常”的单一INSERT / SELECT / ...语句?

Mat*_*lie 5

三个主要的性能优势浮现在脑海中: 1. 发送到 SQL Server 的字符串更短
2. 这使得解析时间更短
3. 执行计划提前准备好了

虽然看似微不足道,但后一点可能很重要;检查对象是否存在,字段数是否正确等。

但是,总的来说,我会说只有在连续多次调用时才重要。


在我看来,一个更重要的优势是工程方面的优势。封装。

将来,您可能会决定添加日志记录、一致性检查、业务逻辑或任何其他内容。通过将其封装在 SP 中,它将只需要在一个地方进行修改。