一、什么是预处理
预处理可以提高客户端和服务端数据传输的效率。当创建一个预定义 SQL 时客户端向服务器发送一个 SQL 语句的原型;服务器接收到这个 SQL 语句后,解析并存储这个 SQL 语句的部分执行计划,并返回给客户端一个 SQL 语句句柄,以后每次执行这个 SQL 语句,客户端都会使用这个句柄。
二、预处理的优势
- 搞笑执行重复的 SQL :服务器只需要解析一次 SQL;在服务器上的某些优化器的工作只需要执行一次,它会缓存一部分执行计划。
- 减少网络开销:对于重复执行的 SQL 语句,每次调用的使用只需要将参数发送到服务器段,这样就减少了网络开销。
- 安全:预处理语句不用在应用程序中对特殊字符进行转义,减少了 SQL 注入的风险。
三、预处理语句语法
MySQL 支持在不使用二进制传输协议的情况下直接以 SQL 的方式使用预处理。语法如下:
# 定义预处理语句 PREPARE stmt_name FROM preparable_stmt; # 执行预处理语句 EXCUTE stmt_name [USING @var_name [,@var_name]..]; # 删除 {DELLOCATE|DROP} PREPARE stmt_name;
例如:更具学号查询学生的信息
prepare selectStudent from 'select * from student where id=?'; # 查询学号为56学生的信息学 SET @id=56; exceute selectStudent using @id;