【发布时间】:2010-11-01 21:30:32
【问题描述】:
存储过程是否有没有它们就无法实现的性能优势?
【问题讨论】:
-
存储过程什么时候性能更高...总是。
标签: mysql database stored-procedures
存储过程是否有没有它们就无法实现的性能优势?
【问题讨论】:
标签: mysql database stored-procedures
可以使用存储过程优化非常大的查询,但差异通常很小。
来自应用程序的大型查询需要通过网络传输,然后由 SQL 服务器解析。
使用存储过程,可以减少传输的数据量,不需要每次调用过程都进行解析。
【讨论】:
当您必须在存储过程中执行多个查询时。
假设有两个查询 - 存在无法弥补的往返行程(假设数据库和应用程序代码不在同一个盒子上 - 在中型到大型应用程序中很常见)。加上管理交易的担忧......
与其说是性能问题,不如说是有人可以提交任何 SQL,除了参数化查询的安全性之外,这是一个巨大的安全问题。
【讨论】:
如果您只讨论执行时间性能(而不是可维护性),那么存储过程通常优于非参数化查询,因为它们的执行计划由 SQL 服务器自动缓存。
请注意,与非参数化查询相比,参数化查询也可能由 SQL 服务器缓存,但一般来说,使用存储过程时更有可能获得执行计划缓存,因为这意味着将使用相同的查询来执行无论您在应用程序中的哪个位置调用它,都执行相同的任务。
【讨论】: