sql预编译

先来看下sql的执行流程

在这里插入图片描述

上面sql的执行流程可以简单看作:

  1. 语法和语义解析
  2. 优化sql,制定执行计划
  3. 执行并返回结果

预编译语句

很多时候一条sql语句可能会反复执行,或者每次执行的时候只有某些值不一样。比如query的where条件不一样,insert的value不一样。如果每次都经过上述1,2步,就显得有些浪费。

预编译语句就是将这些语句中的值用占位符替代,可以视为将sql语句模版化或者参数化。

预编译语句的优势:

  • 一次编译多次执行,提高效率
  • 防止sql注入

MySQL中的预编译语句作用域是session级的

使用方式

编译:

prepare insert_tpl from 'insert into demo values (?,?);

执行:

set @user_id=1, @age=20;
#Query OK, 0 rows affected (0.00 sec)

execute  insert_tpl using @user_id,@age
#Query OK, 1 row affected (0.01 sec)
#Records: 1  Duplicates: 0  Warnings: 0

释放:

deallocate prepare insert_tpl;
#Query OK, 0 rows affected (0.00 sec)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值