位置: 编程技术 - 正文

MySQL存储过程的优化实例(mysql中的存储过程)

编辑:rootadmin

推荐整理分享MySQL存储过程的优化实例(mysql中的存储过程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql存储过程的语句块以什么开始以什么结束,mysql中的存储过程,mysql中的存储过程,mysql存储过程的优点是什么,Mysql存储过程的作用,mysql中的存储过程,Mysql存储过程的修改,mysql存储过程的语句块以什么开始以什么结束,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用存储过程来封装数据库操作。如果项目的存储过程较多,书写又没有一定的规范,将会影响以后的系统维护困难和大存储过程逻辑的难以理解,另外如果数据库的数据量大或者项目对存储过程的性能要求很,就会遇到优化的问题,否则速度有可能很慢,经过亲身经验,一个经过优化过的存储过程要比一个性能差的存储过程的效率甚至高几百倍。下面介绍某一个MySQL存储过程优化的整个过程。

在本文中,需要被优化的存储过程如下:

在存储过程中使用到的表tb_testnum结构如下:

在存储过程中使用到的另外一张表tb_testnum_tmp结构如下:

从两个表的结构可以看出,tb_testnum和tb_testnum_tmp所包含的字段完全相同,存储过程pr_dealtestnum的作用是根据输入参数将tb_testnum_tmp表的数据插入到tb_testnum表中。

很明显,虽然能够实现预期的功能,但存储过程pr_dealtestnum的代码还有改进的地方。

下面,我们一步一步来对其进行优化。

优化一

MySQL存储过程的优化实例(mysql中的存储过程)

存储过程pr_dealtestnum的主体是一条insert语句,但这条insert语句里面又包含了select语句,这样的编写是不规范的。因此,我们要把这条insert语句拆分成两条语句,即先把数据从tb_testnum_tmp表中查找出来,再插入到tb_testnum表中。修改之后的存储过程如下:

优化二

在向tb_testnum表插入数据之前,要判断该条数据在表中是否已经存在了,如果存在,则不再插入数据。同理,在从tb_testnum_tmp表中查询数据之前,要先判断该条数据在表中是否存在,如果存在,才能从表中查找数据。修改之后的存储过程如下:

优化三

不管向tb_testnum表插入数据的操作执行成功与否,都应该有一个标识值来表示执行的结果,这样也方便开发人员对程序流程的追踪和调试。也就是说,在每条leave语句之前,都应该有一个返回值,我们为此定义一个输出参数。修改之后的存储过程如下:

优化四

我们注意到“insert into tb_testnum values(p_boxnumber,p_usertype);”语句中,tb_testnum表之后没有列出具体的字段名,这个也是不规范的。如果在以后的软件版本中,tb_testnum表中新增了字段,那么这条insert语句极有可能会报错。因此,规范的写法是无论tb_testnum表中有多少字段,在执行insert操作时,都要列出具体的字段名。修改之后的存储过程如下:

优化五

在执行insert语句之后,要用MySQL中自带的@error_count参数来判断插入数据是否成功,方便开发人员跟踪执行结果。如果该参数的值不为0,表示插入失败,那么我们就用一个返回参数值来表示操作失败。修改之后的存储过程如下:

总结

从上面可以看出,一个短短的存储过程,就有这么多需要优化的地方,看来存储过程的编写也不是一件很简单的事情。确实,我们在编写代码(不仅仅是存储过程)的时候,一定要从代码的功能、可读性、性能等多方面来考虑,这样才能够写出优美的、具备较长生命周期的代码,进而开发出高质量的软件产品。希望本文能对大家学习MySQL存储过程有所帮助,也谢谢大家对积木网的支持。

MySql中表单输入数据出现中文乱码的解决方法 MySQL会出现中文乱码的原因在于1.server本身设定问题,一般来说是latin.建库建表时没有制定编码格式。MySql中表单输入数据出现中文乱码的解决方法:1.

Mysql使用索引实现查询优化 索引的目的在于提高查询效率,可以类比字典,如果要查mysql这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。如果没

使用MySQL的yum源安装MySQL5.7数据库的方法 一、安装配置MySQL的yum源#安装MySQL的yum源,下面是RHEL6系列mysql5.6的下载地址:

标签: mysql中的存储过程

本文链接地址:https://www.jiuchutong.com/biancheng/347941.html 转载请保留说明!

上一篇:MySQL常用基本SQL语句总结(mysql基本sql语句大全(基础用语篇))

下一篇:MySql中表单输入数据出现中文乱码的解决方法(mysql如何输入数据)

  • 未达起征点增值税申报表怎么填
  • 小规模纳税人代扣代缴个人所得税
  • 长期待摊费用怎么算
  • 利润分配未分配利润和未分配利润的区别
  • 税金及附加减半征收政策2022最新
  • 主营业务收入体现在资产负债表哪里
  • etc怎么取过路费啊
  • 应交税费贷方有余额,怎么销账
  • 冲减营业税金及附加的分录
  • 待报解预算收入计入什么科目
  • 一般纳税人增值税怎么做账务处理
  • 营改增增值税优惠政策
  • 利息保障倍数为负数,是偿债能力弱的表现
  • 公司试驾车购置税怎么交
  • 企业用于存货的支出
  • 计提公司所得税分录
  • 已经抵扣的发票可以取消抵扣吗
  • 虚开发票什么意思?
  • 0税率发票纳税申报如何填报
  • 收购药材再销售可以免税
  • 以前年度损益调整怎么用
  • 在建工程预转固后又有工程款
  • 公司帮别人代缴社保
  • 买二手车转让费一般要多少钱
  • 发票进项抵扣有什么用
  • 小规模可以接收专票吗现在
  • 一般纳税人专票和普票有什么区别
  • 税种登记要带什么资料?
  • 公司经营权补偿款会计处理?
  • 员工离职一次性结清工资
  • 年初未分配利润是什么科目
  • win10系统没有声卡驱动
  • 网络安全与安全教育内容
  • 股份支付有哪些基本类型
  • 税前扣除凭证管理办法第九条称小额零星支出是
  • 奖金发放的原则
  • 消费税计算包括关税吗
  • 发行的企业债券是什么会计科目
  • html该怎么学
  • 清明 哀思
  • 生育津贴有什么补贴
  • thinkphp console
  • 广告费与业务宣传费范围
  • 关于商业承兑汇票的多选题有哪些
  • 子公司破产对母公司是利好还是利空
  • 2021市场发展
  • 企业购进固定资产,在安装完工交付使用时
  • 货币盘盈盘亏账怎么算
  • 增值税税点怎么算3个点
  • 支付宝商户服务电话
  • 处置固定资产净收益属于利得吗
  • db2 linux
  • 原来的预提费用取消后放哪里
  • 广告牌制作加盟厂家
  • 权益性投资收益按照什么确认收入的实现
  • 年终零余额账户额度和收入相等吗
  • 代扣个税返还需要交增值税吗
  • 小规模其他业务收入交多少税率
  • 预付押金是否可以退回
  • 外经证是在工程所在地办理吗
  • 小规模公司怎么做账
  • win7系统ie浏览器打不开
  • windowsxp有密码忘了怎么办
  • mac安装字体方法
  • win8如何使用网页版的onedrive
  • winxp不能正常启动
  • libmysqlclient.so.10无法找到
  • win10系统激活后怎么关闭
  • 边做游戏边学
  • Intermediate Unity 3D for iOS: Part 1/3
  • ext combox 下拉框不出现自动提示,自动选中的解决方法
  • vim如何在文件中添加
  • js settimeout用法
  • jQ处理xml文件和xml字符串的方法(详解)
  • 简述javascript的常用控制结构
  • jquery动态添加div
  • android:padding="10dp"
  • Unable to connect to zookeeper
  • 自然人扣缴端重置密码操作流程
  • 乌市社保缴费一个月多少钱
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设