go语言中MySQL预处理
2021-03-31 本文已影响0人
梁帆
一、什么是预处理?
普通SQL语句执行过程:
1、客户端对SQL语句进行占位符替换得到完整的SQL语句。
2、客户端发送完整SQL语句到MySQL服务端。
3、MySQL服务端执行完整的SQL语句并将结果返回客户端。
预处理执行过程:
1、把SQL语句分成两部分,命令部分与数据部分。
2、先将命令部分发送给MySQL服务端,MySQL服务端进行SQL预处理。
3、然后把数据部分发送给MySQL服务端,MySQL服务端对SQL语句进行占位符替换。
4、MySQL服务端执行完整的SQL语句并将结果返回给客户端。
二、为什么要预处理?
1、优化MySQL服务器重复执行SQL的方法,可以提升服务器性能,提前让服务器编译,一次编译多次执行,节省后续编译的成本。
2、避免SQL注入问题。
三、Go实现MySQL预处理
database/sql中使用下面的Prepare方法来实现预处理操作:

查询操作的预处理示例代码如下:

核心代码就在这几行:

预处理的插入示例同理,加入了这段核心代码:
