我目前正在查看一些通过运行存储过程进行简单插入/选择/更新的代码。
所以代码基本上是
CallableStatememt stm= jdbcConnection.prepareCall(sp_name with ??) ;
stm.setParameters()
stm.execute();
正如我之前所说的,代码behint sp_name主要是微不足道的。没有多表插入或复杂的计算。
是否有任何好处,只是做
Statement stm = jdbcConnection.prepareStatement(insert_query)
stm.setParameters();
stm.execute();
其中insert_query
是'普通'单 INSERT / SELECT / ...语句?
答案 0 :(得分:4)
我想到了三个主要的性能优势:
1.发送到SQL Server的字符串较短
这使解析时间缩短了
3.执行计划已提前准备
虽然看似微不足道,但后一点可能很重要;检查对象是否存在,正确的字段数等等。
但总的来说,我会说这些只是在被连续多次打电话时才有意义。
在我看来,一个更重要的优势是工程优势;封装
将来,您可能决定添加日志记录或一致性检查,业务逻辑或任何内容。通过将其封装在SP中,它只需要在一个地方进行修改。
答案 1 :(得分:1)
存储过程是一个包含一个或多个SQL语句的预编译可执行对象。因此,存储过程是预编译对象,它们在数据库服务器上执行得更快。大多数情况下,存储过程包含多个命令;
在此处查看更多信息:
有关存储过程的更多信息:
答案 2 :(得分:1)
使用存储过程的主要优点是: