database - 存储过程的缺点

标签 database sql-server-2005 database-design stored-procedures

想要获得使用存储过程的优点和缺点的列表。 SP 的主要优点似乎是预编译和从应用程序中提取数据。给我你的想法....

最佳答案

优点:为数据库(另一个抽象层)提供“公共(public)接口(interface)”。

还将所有查询分组在同一位置,使 DBA 更容易查看数据库的查询方式并相应地对其进行优化。

缺点:可能不是放置复杂逻辑的最佳位置。然而,按照复杂逻辑属于应用程序代码而不属于存储过程的想法,存储过程变成了简单的 CRUD 操作(每个表都有一个“创建”、“读取”、“更新”和“删除”过程)。在那种情况下,存储过程不会为应用程序增加任何值(value),它们只会使维护复杂化并成为浪费。

查询全部组合在一起,因此很难看到使用它们的应用程序的上下文。分析变更的影响需要更长的时间,实现变更的时间也更长。

因此:使用存储过程来封装复杂的查询(复杂的连接、复杂的 where 子句……)。但是不要将存储过程用于复杂的应用程序/领域/业务逻辑,也不要将存储过程用于 CRUD。因此,存储过程应该在少数情况下使用,而不是作为应用程序中所有查询的标准工具。

分组代码(包括查询)以实现“功能内聚”而不是按工具/技术分组。要允许 DBA 根据查询方式优化数据库,请使用分析器。

关于database - 存储过程的缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/226859/

相关文章:

database - Delphi + SQLite + DB Express select 参数错误

ruby-on-rails - Ruby on Rails 的对象数据库

database - 在哪里存储数据库表名?

database - 在 Play 中,我可以根据数据库类型应用不同的 Evolutions 吗?

php - 使用 PHP 将 facebook 个人资料图片添加到高分表

sql - 交叉表多列

sql-server - 字符串中的前两个单词 - sql server

sql - 如何通过批处理将SQL存储过程保存到.sql文件

sql - 在 SQL-Server 中表示“某物”数据

mysql - 我们如何处理在表的所有记录中具有相同值的列?