- PREPARE 语句:SET@sql1=‘xxx’; PREPARE stmt1 FROM @sql1;
- 变量用问号代替(绑定变量)。
- 作用:将SQL预先解析,在一个Session内再次使用此语句时不再重新解析。
- EXECUTE 语句:EXECUTE stmt1 USING @val1,@val2;
- 作用:将绑定变量赋予具体的值并且执行。
- DEALLOCATE 语句: DEALLOCATE PREPARE stmt1;
- 作用:销毁一个预解析SQL,释放资源。
- 为何使用绑定绑定变量?
- 因为绑定变量比直接传值更安全,尤其是拼接SQL非常容易被注入攻击。同时绑定变量也可以提高一点效率。
- 为何使用预处理,尤其在存储过程?
- 因为预处理可以避免SQL的反复解析,尤其是执行速度快的小SQL,解析时间甚至可能超过执行时间,采用预处理可以显著提高性能。