1
11
更正:是否预编译取决于数据库。例如,在SQL Server中,它们不是。存储过程和参数化SQL都是在运行之前编译的。如果存在相应的执行计划,存储过程有时可以重用执行计划…但参数化SQL也是如此。 编辑: Here's what MSDN says about it :
|
2
33
优势 :为数据库(另一个抽象层)提供“公共接口”。 同时,将所有查询分组在同一位置,使DBA更容易了解如何查询数据库并相应地对其进行优化。 缺点 :可能不是放置复杂逻辑的最佳位置。但是,遵循复杂逻辑属于应用程序代码而不是存储过程的思想,存储过程变成了简单的CRUD操作(每个表都有一个“创建”、“读取”、“更新”和“删除”过程)。在这种情况下,存储过程不会为应用程序增加任何价值,它们只会使维护复杂化并成为浪费。 查询都被分组在一起,因此很难看到使用它们的应用程序的上下文。分析变更的影响时间更长,进行变更的时间也更长。 因此 :使用存储过程封装复杂查询(复杂联接、复杂WHERE子句…)。但不要将存储过程用于复杂的应用程序/域/业务逻辑,也不要将存储过程用于CRUD。因此,存储过程应该在少数情况下使用,而不是作为应用程序中所有查询的标准工具。 分组代码(包括查询)以实现“功能内聚”,而不是通过工具/技术进行分组。要允许DBA根据查询方式优化数据库,请使用探查器。 |
3
10
通过使用SP,还可以避免让用户直接访问表。所有访问都可以通过SPS进行控制。 |
4
6
缺点
优势
|
5
5
对于当前的.NET 3.5框架库,我将使用LINQ执行大多数数据库操作。在某些地方,sp可能更有意义。但Linq也有运行SP的规定。 关于SP的缺点,请查看以下链接-一个有趣的分析。也可以查看博客文章的评论。 http://www.spoiledtechie.com/post/Whats-up-with-Stored-Procedures-these-days.aspx |
6
5
优点:存储过程可用于维护数据完整性和强制执行数据库策略,而无需依赖外部程序。 缺点:可以使调试更加复杂。如果操作不正确,也会对在复制操作期间被丢弃敏感。 |
8
4
另一个缺点是版本控制,因为一些业务逻辑现在在数据库端。你能轻松地从v2(现在)回滚到v1(一年前)吗? 一个可行的解决方案是对存储过程名称进行版本控制。但现在,数据库中的旧存储过程和新存储过程一团糟。 |
9
4
缺点
|
10
3
在构建应用程序时仅使用存储过程的几个原因:
|
11
2
优点:DBA可以添加应用程序不关心的行为。例如,在每行存储修改日期。 |
12
2
优势:您的数据库相关代码更有可能是由对数据库工作感兴趣和熟练的人员编写的。 |
13
2
与在应用程序代码中编写相同的逻辑相比,使用存储过程的优势在于它可以减少应用程序对数据库的调用次数。 存储过程可以接受其参数并根据这些参数做出不同的决定和操作,而不是将结果返回给应用程序,然后应用程序做出决定并决定需要执行另一个操作并进行另一个数据库调用。 性能上的瓶颈几乎总是进程间通信。我尽量减少对数据库的调用。 |
14
1
优点:操作团队有一个钩子来监视或修复生产中的问题。 |
15
1
优点:sp用于执行一组SQL语句。 缺点:调试比较复杂 |
16
1
另一个优势是在大型企业环境中,您可以拥有多个使用数据库的客户机应用程序和环境(如Web、桌面、分布在不同操作系统上的报告工具)。对于某些业务规则更改,可以在数据库中进行更改,这在所有环境中都是有效的。 |
17
0
优势-
|
18
0
它增加了服务器上的负载。如果其他应用程序或多个应用程序正在使用同一数据库服务器,则速度会变慢。 |
19
0
简单的答案如下: 它是封装T-SQL代码的最强大的结构。 它不仅限于选择,而且支持所有DML代码。 它提供接收输入和直接返回输出。 dis:无法在select中调用它,因此无法运行它 几条记录。 |
Michael Samuel · MYSQL在以下情况下自动创建索引 6 年前 |
Patricia Rozario · 数据库设计确保一对一关系 6 年前 |
dryhay · MySQL“多对多”关系错误 6 年前 |
L. Fox · 我在这里用的是什么样的Laravel雄辩的关系 6 年前 |
Geoff Harper · 我应该如何构建关系松散的SQL db 6 年前 |
waroxx · SQL—当多个表具有相同的列时,最好怎么做 6 年前 |
Lumpi01 · SQL 2不同的注释类型-最佳解决方案? 6 年前 |
Hayreddin Tüzel · 预约系统数据库建模[关闭] 6 年前 |