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