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

时间:2011-02-25 12:57:44

标签: database jdbc

我目前正在查看一些通过运行存储过程进行简单插入/选择/更新的代码。

所以代码基本上是

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 / ...语句?

3 个答案:

答案 0 :(得分:4)

我想到了三个主要的性能优势: 1.发送到SQL Server的字符串较短
这使解析时间缩短了 3.执行计划已提前准备

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

但总的来说,我会说这些只是在被连续多次打电话时才有意义。


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

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

答案 1 :(得分:1)

存储过程是一个包含一个或多个SQL语句的预编译可执行对象。因此,存储过程是预编译对象,它们在数据库服务器上执行得更快。大多数情况下,存储过程包含多个命令;

在此处查看更多信息:

有关存储过程的更多信息:

答案 2 :(得分:1)

使用存储过程的主要优点是:

  1. SP中的所有sql命令将一起执行,否则将不执行任何命令。这确保了原子性。 SP中的所有sql命令都在事务范围内。
  2. SP比普通的sql命令快得多。通过创建适当的执行计划,数据库可以编译和优化SP。
  3. 控制流语句(如IF-ELSE)和循环(如FOR)可以在SP中使用,但不能在sql查询中使用。这样可以节省DAO中提取的大量数据,然后处理数据。
  4. 减少网络流量,因为只需通过网络传输所需数据。
  5. 模块化SP的代码,因为它有助于重用,并有助于维护逻辑。