zoukankan      html  css  js  c++  java
  • 存储过程与SQL语句怎么选择

    应用存储过程的优点:
    1.具有更好的性能
    存储过程是预编译的,只在创建时进行编译,以后每次执行存储过程都不需再重新编译,
    而一般 SQL 语句每执行一次就编译一次,因此使用存储过程可以提高数据库执行速度。
    2.功能实现更加灵活
    存储过程中可以应用条件判断和游标等语句,有很强的灵活性,可以直接调用数据库的一些内置函数,完成复杂的判断和较复杂的运算。
    3.减少网络传输
    复杂的业务逻辑需要多条 SQL 语句,当客户机和服务器之间的操作很多时,
    将产生大量的网络传输。如果将这些操作放在一个存储过程中,那么客户机和服务器之间的网络传输就会减少,降低了网络负载。
    4.具有更好的安全性
    (1)数据库管理人员可以更好的进行权限控制,存储过程可以屏蔽对底层数据库对象的直接访问,使用 EXECUTE 权限调用存储过程,无需拥有访问底层数据库对象的显式权限。
    (2)在通过网络调用过程时,只有对执行过程的调用是可见的。无法看到表和数据库对象名称,不能嵌入SQL 语句,有助于避免 SQL 注入攻击。
    存储过程的弊端:
    1.架构不清晰,不够面向对象
    存储过程不太适合面向对象的设计,无法采用面向对象的方式将业务逻辑进行封装,
    业务逻辑在存储层实现,增加了业务和存储的耦合,代码的可读性也会降低,
    2.开发和维护要求比较高
    存储过程的编写直接依赖于开发人员,如果业务逻辑改动较多,需要频繁直接操作数据库,
    大量业务降维到数据库,很多异常不能在代码中捕获,出现问题较难排查,需要数据库管理人员的帮助。
    3.可移植性差
    过多的使用存储过程会降低系统的移植性。在对存储进行相关扩展时,可能会增加一些额外的工作。
    存储过程与SQL语句如何抉择:
    普通的项目开发中,不建议大量使用存储过程,对比SQL语句,存储过程适用于业务逻辑复杂,比较耗时,同时请求量较少的操作,例如后台大批量查询、定期更新等。

    (1)当一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时可以考虑应用存储过程
    (2)在一个事务的完成需要很复杂的商业逻辑时可以考虑应用存储过程
    (3)比较复杂的统计和汇总可以考虑应用后台存储过程

  • 相关阅读:
    数据库时间类型
    【西瓜视频】帮妈妈下载广场舞健身操视频
    Consul+Ocelot+Polly在.NetCore中使用(.NET5)-Ocelot+Polly缓存、限流、熔断、降级
    Consul+Ocelot+Polly在.NetCore中使用(.NET5)-网关Ocelot+Consul
    Consul+Ocelot+Polly在.NetCore中使用(.NET5)-Consul服务注册,服务发现
    .NET5修改配置不重启自动生效
    RabbitMQ从零到集群高可用.NetCore(.NET5)-高可用集群构建落地
    Redis初步使用记录
    NPM 错误收集及解决方法
    挪动了一个if语句的位置,运行速度大幅提升
  • 原文地址:https://www.cnblogs.com/ipetergo/p/6823330.html
Copyright © 2011-2022 走看看