从MySQL 4.1开始,就支持预处理语句(Prepared statement),这大大提高了客户端和服务器端数据传输的效率。当创建一个预定义SQL时,客户端向服务器发送一个SQL语句的原型;服务器端接收到这个SQL语句后,解析并存储这个SQL语句的部分执行计划,返回给客户端一个SQL语句
处理句柄,以后每次执行这条SQL,客户端都指定使用这个句柄。
- 即时SQL和预处理SQL对比
1、即时SQL:一次编译、一次运行
2、预处理SQL:一次编译、多次运行
- 预处理优势:
1、高效执行重复SQL
在服务器端只需要解析一次SQL;
在服务器端某些优化器的工作只需要执行一次,它会缓存一部分执行计划
2、减少网络开销
对于重复的SQL,后续查询只需要将参数传到服务器即可
3、更加安全
使用预处理语句,无须在应用程序中处理转义,也大大减少了SQL注入和攻击的风险。
- 预处理的基本使用
# 定义预处理语句
PREPARE stmt_name FROM preparable_stmt;
# 执行预处理语句