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;