MySQL的存储过程优缺点

1、存储过程概念

存储过程是一些sql语句和控制语句组成的被封装起来的过程,它驻留在数据库中,可以被客户应用程序通过存储过程名字调用,也可以从另一个存储过程或触发器调用。

它的参数可以被传递和返回,与应用程序中的函数过程类似,
存储过程可以通过名字来调用,具有输入参数和输出参数。

2、存储过程分类

  1. 返回记录集的存储过程
    ----从数据库返回符合一个或几个条件的记录

  2. 返回数值的存储过程(标量存储过程)
    ----在数据库执行一个有返回值的函数或命令

  3. 行为存储过程
    -----在数据库中的更新和删除操作

3、为什么要是用存储过程?

优点:

(1) 执行速度快:
存储过程只在创建时进行编译,以后每次执行存储过程都不需要重新编译,
而一般SQL语句没执行一次就需编译一次,所以使用存储过程可提高数据库的执行速度。

(2) 减少网络通信量
当对数据库进行复杂操作时,(如对多个表进行insert、update、select、delete时)可将这些复 杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。这些操作,如果用程序完成就是多条SQL语句,可能要多次连接数据库,而换成存储过程只需一次连接。

(3) 更强的适应性与复用性
存储过程可以重复使用,提高了可重用性,减少数据库开发人员的工作量。

(4) 可维护性高——更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。

(5) 安全性高,可设定只有某用户才能对指定存储过程的使用权,且存储过程比多条sql稳定,只要数据库不出现问题,基本上是不会出现什么问题的。

(6) 分布式工作——应用程序和数据库的编码工作可以单独进行,减少耦合度。

(7) 更好的版本控制,通过svn等源代码控制工具可以轻松恢复或引用旧版本的存储过程。

4、存储过程的缺点

(1)开发调试差:无良好的IDE开发工具,存储过程的调试比一般SQL要复杂的多。

(2)可移植性差:由于存储过程将应用程序绑定到数据库上,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。

MySQL的存储过程优缺点相关推荐

  1. MySQL 之 存储过程

    一.初识存储过程 1.什么是存储过程 存储过程是在大型数据库系统中一组为了完成特定功能的SQL语句集,存储在数据库中.存储过程经过第一次编译后,再次调用不需要编译,用户可以通过指定的存储过程名和给出一 ...

  2. MySql的存储过程的优点与缺点

    MySql的存储过程的优点与缺点 一.存储过程优点 二.存储过程的弊端 三.总结 总结下使用存储过程的优缺点 一.存储过程优点 存储过程是一组预先创建并用指定的名称存储在数据库服务器上的 SQL 语句 ...

  3. MySQL 05 存储过程

    MySQL 05 存储过程 文章目录 MySQL 05 存储过程 一.学习目标 二.存储过程 2.1为什么需要使用存储过程 2.2什么是存储过程 2.3存储过程的优缺点 三.创建存储过程 3.1语法与 ...

  4. Mysql使用存储过程快速添加百万数据

    这篇文章主要介绍了Mysql使用存储过程快速添加百万数据,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 前言 为了体现不加索引和添加索引的区别, ...

  5. Java调用mysql的存储过程

    在之前写过一篇博客是如何mysql如何创建存储过程,在这一节中,我们是在原来的基础上来进一步的学习,如何在Java程序中使用Java代码来调用mysql存储过程. mysql创建存储过程:http:/ ...

  6. mysql %type_mysql 存储过程 %type

    MYSQL修改存储过程的访问权限 版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/inforstack/article/details/80547478 ...

  7. mysql 存储过程无效_用VC通过DLL包连接MySQL,执行存储过程后,再执行其他查询无效?解决方法...

    用VC通过DLL包连接mysql,执行存储过程后,再执行其他查询无效? MYSQL mysql; mysql_init(&mysql); mysql_real_connect(&mys ...

  8. python调用数据库存储过程_python连接mysql调用存储过程示例

    复制代码 代码如下: #!/usr/bin/env python # -*- coding: utf8 -*- import MySQLdb import time import os, sys, s ...

  9. MySQL 高级 - 存储过程 - 语法 - case结构

    MySQL 高级 - 存储过程 - 语法 - case结构 -- 给定一个月份, 然后计算出所在的季度 create procedure pro_test7(mon int) begindeclare ...

最新文章

  1. 建立YUM服务器CENTOS
  2. STM32中EXTI和NVIC的关系
  3. 实现俄罗斯方块遇到的问题及游戏下载
  4. Python的函数名作为参数传入调用以及map、reduce、filter
  5. 【阿里云 Linux 服务器】在阿里云购买的 Linux 或者 Windows 服务器,在用 putty 访问的时候不知道用户名密码怎么办?
  6. Django-RESTframework序列器
  7. 剑指offer--斐波那契数列
  8. 大盘点: KubeCon EU 2019 应用管理领域的新看点!
  9. 计算机国二笔试试题,全国计算机等考试二笔试试题(2).ppt
  10. =====BJmeter性能测试小接=====
  11. LearnGL - 06.2 - Matrix - 矩阵03 - 逆矩阵、行列式、伴随矩阵、余子式、代数余子式、练习
  12. 计算机网络hdcp是什么意思,NTSC,HDCP ,NTSC/HDCP是什么意思
  13. rundll32.exe传入参数
  14. 关于Palantir——第一部分
  15. 消费返利模式的众筹玩法轻松无压力
  16. 在Js中使程序睡眠的sleep方法
  17. 3.Jenkins入门基础使用与Maven+SonarQube集成配置与实践
  18. 详解pandas的read_csv方法
  19. 移动性能测试工具perfDog分享和wifi链接问题
  20. 地平线机器人上海待遇_目前室内机器人、SLAM现状如何?行业内顶尖技术在哪些高校或企业 ?...

热门文章

  1. PCL之估计点云子集的表面法线
  2. 日常学习随笔-数组、单链表、双链表三种形式实现队列结构的基本操作(源码注释)...
  3. 201509-2-日期计算
  4. mysql cluster 乱码_Mysql中文乱码问题完美解决方案
  5. verilog实现多周期处理器之——目录及总述
  6. java多线程的api_java多线程之:线程对象一些api
  7. Ghost Blog
  8. 使用IDEA编写一个springMVC架构的HelloWorld
  9. js中做数字运算时出现的异常,期望值比实际值小太多太多
  10. 去oracle过程,记一次Oracle数据恢复过程