预处理可以提高客户端和服务端数据传输的效率。当创建一个预定义 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;