存储过程有什么意义?

Web*_*net 3 mysql sql-server

它们对数据库管理员以外的任何内容都有用吗?如果我理解正确,它只是可以直接保存到MySQL中的查询,因此任何Web开发团队都无法使用它们.

Rob*_*vey 11

存储过程是在数据库服务器上运行的代码.

它们有很多用途.想一想:如果我可以直接在数据库服务器上运行代码,我可以用它做什么?

在它们的许多用途中,存储过程可用于将一些处理负载转移到数据库服务器,以减少网络流量提高安全性.

http://en.wikipedia.org/wiki/Stored_procedure


Dav*_*vid 6

以下是其他答案中未涉及的两个优点,简单优点:

  • 安全性 - 参数化存储过程比SQL的字符串更安全(Google SQL注入大约有一百万个文档)但是,如果您的语言支持它们,参数化查询也适用于此
  • 简化维护 - 更新存储过程比重新编译代码和重新部署要容易得多.在我15年的发展过程中,我学到了很多东西.如果查询有可能发生变化,请将其放入存储过程中.与重新编译和重新部署代码相比,它更容易使用SOOO.

添加

它们还可以减少网络抖动.如果您要运行许多复杂的wueries,您可以将它们全部放在一个存储过程中,并且您的应用程序只需要拨打一个电话即可完成所有工作.

此外,在大多数平台中,存储过程具有性能优势.例如,在SQL Server中,数据库引擎优化并保存执行计划以加快速度.这些链接也回答了你的问题:

http://blog.sqlauthority.com/2007/04/13/sql-server-stored-procedures-advantages-and-best-advantage/

http://searchsqlserver.techtarget.com/news/1052737/Why-use-stored-procedures

我不能赞同这个答案,但我认为这个引用是一个很好的观点,尽管我认为自己在方程式的两个方面都非常熟练 - 有专门的知识可以说.

优点4:存储过程通常由数据库开发人员/管理员编写.拥有这些角色的人通常在编写高效查询和SQL语句方面经验丰富.这使GUI应用程序开发人员可以利用他们在应用程序的功能和图形表示部分上的技能.如果您让人们执行他们最适合的任务,那么您最终将产生更好的整体应用程序.