2010-06-25 118 views
6

存储过程和函数之间有什么区别。存储过程和函数

每当有更多的输入,输出参数我去存储过程。如果只有一个,我会去做功能。

除此之外,如果我使用更多的存储过程,是否有任何性能问题?我很担心,因为我的项目中有近50个存储过程。

它们在概念上有何不同。

提前致谢!

EDITED: -

当我在执行存储过程和函数的计算,我已发现,在存储过程中它正在0.15秒,而在功能上需要0.45sec。

令人惊讶的功能比存储过程花费更多的时间。可能是函数值得其重用。

内联函数执行速度快于存档过程。我认为,这是因为多选函数不能使用统计,这会降低它们的速度,但内联表值函数可以使用统计。

+1

当您运行性能测量时,您学到了什么?请用实际结果更新问题,比较功能和过程。 – 2010-06-25 11:15:51

+0

因为我有很多存储过程,我想检查,如果有任何性能问题有这么多?问题被编辑。 – satya 2010-06-25 13:37:00

+0

当您创建一个EXAMPLE函数和一个EXAMPLE存储过程,并且运行这两个示例1000次以查看性能差异时,您学到了什么?在这两种形式中重写所有50个*不是有用的。运行两个EXAMPLES非常非常有用。 – 2010-06-25 20:41:45

回答

2

存储过程和SQL Server功能之间的区别...

http://www.dotnetspider.com/resources/18920-Difference-between-Stored-Procedure-Functions.aspx

存储过程和用户​​定义的函数[UDF]

http://www.go4expert.com/forums/showthread.php?t=329

存储过程与功能之间的差异

http://searchsqlserver.techtarget.com/tip/Stored-procedures-vs-functions

什么是存储过程和函数之间的...

http://www.allinterview.com/showanswers/28431.html

差异存储过程之间和职能

http://www.sqlservercentral.com/Forums/Topic416974-8-1.aspx

1

的差异要使用两个中的一个之间做出选择,请记住它们之间的根本区别:存储过程旨在将其输出返回给应用程序。 UDF返回表变量,而SPROC无法返回表变量,尽管它可以创建表。它们之间的另一个显着区别是,UDF不能更改服务器环境或操作系统环境,而SPROC可以。在操作上,当T-SQL遇到错误时,函数将停止,而T-SQL将忽略SPROC中的错误并继续执行代码中的下一个语句(前提是您已包含错误处理支持)。您还会发现,虽然可以在XML FOR子句中使用SPROC,但UDF不能。

如果您有一个操作,例如带有FROM子句的查询,需要从一个表或一组表中获取行集,那么函数将是您的合适选择。但是,如果您想在应用程序中使用相同的行集,则更好的选择是存储过程。

关于UDF与SPROCs的性能优势存在很多争议。您可能会想,相信存储过程会为您的服务器增加比UDF更多的开销。根据您的代码编写方式和您正在处理的数据类型,情况可能并非如此。通过尝试使用这两种类型的方法,将数据编入重要或耗时的操作始终是一个好主意。