美文网首页
mysql——预处理Prepared

mysql——预处理Prepared

作者: 含泪若笑 | 来源:发表于2020-04-15 13:33 被阅读0次

    某需求某一条 SQL 语句可能会被反复调用执行,或者每次执行的时候只有个别的值不同(比如 select 的 where 子句值不同,update 的 set 子句值不同,insert 的 values 值不同)。如果每次都需要经过上面的词法语义解析、语句优化、制定执行计划等,则效率就明显不行了。

    所谓预编译语句就是将此类 SQL 语句中的值用占位符替代,可以视为将 SQL 语句模板化或者说参数化,一般称这类语句叫Prepared Statements。

    预编译语句的优势在于归纳为:一次编译、多次运行,省去了解析优化等过程;此外预编译语句能防止 SQL 注入。

    注意:虽然可能是通过预处理 SQL 的方式一定程度的提高了效率,但是对于优化而言,最优的执行计划不是光靠 SQL 语句的模板化来实现的,往往还是需要通过具体值来预估出成本代价。

    MySQL 官方将 prepare、execute、deallocate 统称为 PREPARE STATEMENT。

    步骤大概分为四步:

    1 set —— SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';

    2 prepare —— PREPARE stmt2 FROM @s;

    3 execute —— EXECUTE stmt2;

    4 deallocate —— DEALLOCATE PREPARE stmt2;

    相关文章

      网友评论

          本文标题:mysql——预处理Prepared

          本文链接:https://www.haomeiwen.com/subject/vbhcvhtx.html