mysql prepare原理

1.prepare stmt from xxx;  //用于 词法分析->语法分析->语义分析 生成一棵语法树(Lex)

2.execute stmt      //执行sql

3.deallocate prepare stmt;  //清除mysql服务器内存中这颗语法树所占用内存。说白了,清除第1步。

prepare 的目的,用于节省 词法分析->语法分析->语义分析 所占用的时间,因为每句普通的sql,比如 select xxx 或者 insert into xxx 都是要进行这些过程的。重复执行,而参数不同,没必要再各种解析的。

所以,要能发挥预处理的功能要如下写:

prepare stmt from 'insert into tab1 values ?'

SET @a = "(1,2,3)";

execute stmt using @a;

SET @a = "(4,5,6)";

execute stmt using @a;

。。。

等insert into 都执行完,再执行

deallocate prepare stmt;

原文地址:https://www.cnblogs.com/workharder/p/15471672.html