何时存储过程比来自应用程序的查询更高效?

时间:2010-11-01 21:30:32

标签: mysql database stored-procedures

如果没有它们,存储过程是否会带来性能优势?

3 个答案:

答案 0 :(得分:2)

可以使用存储过程优化非常大的查询,但差异通常很小。

来自应用程序的大型查询需要通过网络传输,然后由SQL服务器解析。

使用存储过程,可以减少传输的数据量,并且每次调用过程时都不需要执行解析。

答案 1 :(得分:1)

当您必须在存储过程中执行多个查询时 假设有两个问题 - 那就是回程&你无法收回(假设数据库和应用程序代码不在同一个盒子上 - 在中型到大型应用程序中很常见)。加上管理交易的担忧......

与性能问题不同,除了围绕参数化查询的安全性之外,有人可以提交任何SQL这一事实是一个巨大的安全问题。

答案 2 :(得分:0)

如果您只谈论执行时间性能(不可维护性),则存储过程通常优于非参数化查询,因为它们的执行计划由SQL服务器自动缓存。

请注意,与非参数化查询相对的参数化查询也可以由SQL服务器缓存,但一般来说,在使用存储过程时更有可能获得执行计划缓存,因为这意味着将使用相同的查询来执行无论您在应用程序中将其调用到何处,都会执行相同的任务。