mysql存储过程——springboot查询优化

存储过程是数据库中的预编译SQL语句集合,提供增强SQL功能、提高执行速度和安全性。它们允许控制数据访问,并减少网络流量。在MySQL5.0之后开始支持存储过程。创建存储过程包括过程名、参数和过程体。调用存储过程可通过SQL或如MyBatis的映射语句。虽然存储过程有优化潜力,但有时优化SQL、使用索引和分库分表可能更优。
摘要由CSDN通过智能技术生成

存储过程简介

SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。

存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。

简单理解,MySQL 存储过程是一些 SQL 语句的集合。

一个存储过程应包括:
1、过程名
2、过程参数
3、过程体

使用存储过程的优点:
1、增强SQL语言的功能和灵活性
2、较快的执行速度
3、减少网络流量
4、作为一种安全机制来充分利用
存储过程是数据库的一个重要的功能,MySQL 5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。好在MySQL 5.0开始支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性

存储过程的创建

DROP PROCEDURE IF EXISTS SELECT_USER;
CREATE PROCEDURE SELECT_USER (IN PARAMTER VARCHAR(40))
BEGIN
SELECT NAME FROM USER
WHERE
IF(PARAMETER IS NULL,1=1,NAME = PARAMETER);
END

传递参数的类型

  1. IN
    只能当做传入参数

  2. OUT
    只能当做传出参数

  3. INOUT
    可当做传入传出参数

存储过程的调用

  1. mysql
 CALL SELECT_USER('PARAMETER')
  1. mybatis
<select id="SELECT_USER" statementType="CALLABLE" parameterType="java.util.Map" resultType="CLASS">
{call SELECT_USER(
#{parameter,mode=IN,jdbcType=VARCHAR}
)}
</select>

注:jdbcType类型不标注会报PAREMETERMODE IN错误

dao层传递参数类型为Map

总结:能用索引优化的,尽量不要用存储过程
1、优化sql
2、使用索引
3、分库分表——临时表
4、存储过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值